aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-11-12 23:35:43 -0500
committerGravatar Jason Gross <jgross@mit.edu>2017-11-12 23:35:43 -0500
commitb671976eb2364b6d41cc3e450c2570558a0161ec (patch)
tree398df5d4e8c7149c9ba902b37cf42e120d07dedb /src
parenta66e617f17fab0360ae52b896e5afc5fafc90902 (diff)
Update display logs and c files
Diffstat (limited to 'src')
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/femul.c97
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.log71
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.c87
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.log71
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/feadd.c27
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/femul.c64
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesub.c27
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/freeze.c44
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/femul.c78
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/femul.c71
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/femul.c78
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/femul.c78
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/femul.c85
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/femul.c85
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/feadd.c42
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/femul.c99
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/femulDisplay.log64
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesquare.c86
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.log64
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesub.c42
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/freeze.c69
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.log47
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/femul.c85
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/femul.c78
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/femul.c85
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/femul.c85
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/feadd.c39
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/femul.c92
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesub.c39
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/freeze.c64
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/femul.c85
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/feadd.c39
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/femul.c92
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesub.c39
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/freeze.c64
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/feadd.c42
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/femul.c99
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/femulDisplay.log64
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesquare.c86
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.log64
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesub.c42
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/freeze.c69
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.log47
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.c39
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.c101
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.log81
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.c39
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.c64
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/feadd.c42
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/femul.c99
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/femulDisplay.log64
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesquare.c86
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.log64
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesub.c42
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/freeze.c69
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.log47
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/feadd.c42
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/femul.c99
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/femulDisplay.log64
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesquare.c86
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.log64
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesub.c42
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/freeze.c69
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.log47
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/feadd.c45
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/femul.c106
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/femulDisplay.log68
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesquare.c92
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.log68
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesub.c45
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/freeze.c74
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.log50
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/feadd.c48
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/femul.c113
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/femulDisplay.log72
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesquare.c98
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.log72
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesub.c48
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/freeze.c79
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.log53
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/feadd.c48
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesquare.c98
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.log72
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesub.c48
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/freeze.c79
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.log53
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/feadd.c51
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesquare.c104
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.log76
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesub.c51
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/freeze.c84
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/feadd.c51
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesquare.c104
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.log76
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesub.c51
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/freeze.c84
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/feadd.c54
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/fesub.c54
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/freeze.c89
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.log59
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/freeze.c84
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.log56
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/femul.c20
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.log20
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.c20
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.log20
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesub.c4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/freeze.c8
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.log8
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/femul.c18
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.log18
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.c18
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.log18
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesub.c4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/freeze.c8
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.log8
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/femul.c14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/femulDisplay.log14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesquare.c14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.log14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/femul.c16
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/femulDisplay.log16
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesquare.c16
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.log16
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/femul.c97
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.log71
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/femul.c71
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/femul.c97
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.log71
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.c87
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.log71
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/femul.c78
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/femul.c71
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.log35
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/femul.c78
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/feadd.c33
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/femul.c78
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesub.c33
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/freeze.c54
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/femul.c85
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/femul.c85
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/feadd.c36
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/femul.c85
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/femulDisplay.log56
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesquare.c74
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesub.c36
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/freeze.c59
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.log41
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/feadd.c30
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/femul.c71
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/femulDisplay.log48
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesquare.c62
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesub.c30
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/freeze.c49
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.log35
758 files changed, 27527 insertions, 264 deletions
diff --git a/src/Specific/solinas32_2e140m27_7limbs/feadd.c b/src/Specific/solinas32_2e140m27_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27_7limbs/femul.c b/src/Specific/solinas32_2e140m27_7limbs/femul.c
new file mode 100644
index 000000000..84bbf7c78
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x1b * ((uint64_t)x14 * x26)));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x1b * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x1b * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x1b * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x1b * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x1b * (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x14);
+ { uint32_t x36 = ((uint32_t)x34 & 0xfffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ { uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x14);
+ { uint32_t x42 = ((uint32_t)x40 & 0xfffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x14);
+ { uint32_t x45 = ((uint32_t)x43 & 0xfffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x14);
+ { uint32_t x48 = ((uint32_t)x46 & 0xfffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x14);
+ { uint32_t x51 = ((uint32_t)x49 & 0xfffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x14);
+ { uint32_t x54 = ((uint32_t)x52 & 0xfffff);
+ { uint32_t x55 = (x36 + (0x1b * x53));
+ { uint32_t x56 = (x55 >> 0x14);
+ { uint32_t x57 = (x55 & 0xfffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x14);
+ { uint32_t x60 = (x58 & 0xfffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e140m27_7limbs/femulDisplay.log b/src/Specific/solinas32_2e140m27_7limbs/femulDisplay.log
new file mode 100644
index 000000000..9973d40a2
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x1b * ((uint64_t)x14 * x26)));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x1b * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x1b * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x1b * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x1b * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x1b * (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
+ uint32_t x35 = (uint32_t) (x34 >> 0x14);
+ uint32_t x36 = ((uint32_t)x34 & 0xfffff);
+ uint64_t x37 = (x35 + x33);
+ uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ uint64_t x40 = (x38 + x32);
+ uint32_t x41 = (uint32_t) (x40 >> 0x14);
+ uint32_t x42 = ((uint32_t)x40 & 0xfffff);
+ uint64_t x43 = (x41 + x31);
+ uint32_t x44 = (uint32_t) (x43 >> 0x14);
+ uint32_t x45 = ((uint32_t)x43 & 0xfffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x14);
+ uint32_t x48 = ((uint32_t)x46 & 0xfffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x14);
+ uint32_t x51 = ((uint32_t)x49 & 0xfffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x14);
+ uint32_t x54 = ((uint32_t)x52 & 0xfffff);
+ uint32_t x55 = (x36 + (0x1b * x53));
+ uint32_t x56 = (x55 >> 0x14);
+ uint32_t x57 = (x55 & 0xfffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x14);
+ uint32_t x60 = (x58 & 0xfffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesquare.c b/src/Specific/solinas32_2e140m27_7limbs/fesquare.c
new file mode 100644
index 000000000..0e08dac20
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x1b * ((uint64_t)x11 * x11)));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x1b * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x1b * (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
+ { uint32_t x20 = (uint32_t) (x19 >> 0x14);
+ { uint32_t x21 = ((uint32_t)x19 & 0xfffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint32_t x23 = (uint32_t) (x22 >> 0x14);
+ { uint32_t x24 = ((uint32_t)x22 & 0xfffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x14);
+ { uint32_t x27 = ((uint32_t)x25 & 0xfffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x14);
+ { uint32_t x30 = ((uint32_t)x28 & 0xfffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x14);
+ { uint32_t x33 = ((uint32_t)x31 & 0xfffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x14);
+ { uint32_t x36 = ((uint32_t)x34 & 0xfffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ { uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ { uint32_t x40 = (x21 + (0x1b * x38));
+ { uint32_t x41 = (x40 >> 0x14);
+ { uint32_t x42 = (x40 & 0xfffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x14);
+ { uint32_t x45 = (x43 & 0xfffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..b8de3f39b
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x1b * ((uint64_t)x11 * x11)));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x1b * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x1b * (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
+ uint32_t x20 = (uint32_t) (x19 >> 0x14);
+ uint32_t x21 = ((uint32_t)x19 & 0xfffff);
+ uint64_t x22 = (x20 + x18);
+ uint32_t x23 = (uint32_t) (x22 >> 0x14);
+ uint32_t x24 = ((uint32_t)x22 & 0xfffff);
+ uint64_t x25 = (x23 + x17);
+ uint32_t x26 = (uint32_t) (x25 >> 0x14);
+ uint32_t x27 = ((uint32_t)x25 & 0xfffff);
+ uint64_t x28 = (x26 + x16);
+ uint32_t x29 = (uint32_t) (x28 >> 0x14);
+ uint32_t x30 = ((uint32_t)x28 & 0xfffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x14);
+ uint32_t x33 = ((uint32_t)x31 & 0xfffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x14);
+ uint32_t x36 = ((uint32_t)x34 & 0xfffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ uint32_t x40 = (x21 + (0x1b * x38));
+ uint32_t x41 = (x40 >> 0x14);
+ uint32_t x42 = (x40 & 0xfffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x14);
+ uint32_t x45 = (x43 & 0xfffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesub.c b/src/Specific/solinas32_2e140m27_7limbs/fesub.c
new file mode 100644
index 000000000..962321096
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((Const 2097098 + x5) - x17);
+ out[1] = ((0x1ffffe + x7) - x19);
+ out[2] = ((0x1ffffe + x9) - x21);
+ out[3] = ((0x1ffffe + x11) - x23);
+ out[4] = ((0x1ffffe + x13) - x25);
+ out[5] = ((0x1ffffe + x15) - x27);
+ out[6] = ((0x1ffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..1243bec9c
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x1ffffe + x14) - x26), ((0x1ffffe + x15) - x27), ((0x1ffffe + x13) - x25), ((0x1ffffe + x11) - x23), ((0x1ffffe + x9) - x21), ((0x1ffffe + x7) - x19), ((Const 2097098 + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27_7limbs/freeze.c b/src/Specific/solinas32_2e140m27_7limbs/freeze.c
new file mode 100644
index 000000000..5f9eb0720
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffe5);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xfffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xfffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xfffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xfffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0xfffe5);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0xfffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0xfffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0xfffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0xfffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0xfffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0xfffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..d496ecafd
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffe5);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xfffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xfffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xfffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xfffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0xfffe5);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0xfffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0xfffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0xfffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0xfffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0xfffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0xfffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_7limbs/feadd.c b/src/Specific/solinas32_2e141m9_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_7limbs/femul.c b/src/Specific/solinas32_2e141m9_7limbs/femul.c
new file mode 100644
index 000000000..2583f0079
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0x9 * ((uint64_t)x14 * x26)));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x9 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0x9 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x9 * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x9 * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x9 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ { uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x14);
+ { uint32_t x42 = ((uint32_t)x40 & 0xfffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x14);
+ { uint32_t x45 = ((uint32_t)x43 & 0xfffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x14);
+ { uint32_t x48 = ((uint32_t)x46 & 0xfffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x14);
+ { uint32_t x51 = ((uint32_t)x49 & 0xfffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x14);
+ { uint32_t x54 = ((uint32_t)x52 & 0xfffff);
+ { uint32_t x55 = (x36 + (0x9 * x53));
+ { uint32_t x56 = (x55 >> 0x15);
+ { uint32_t x57 = (x55 & 0x1fffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x14);
+ { uint32_t x60 = (x58 & 0xfffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_7limbs/femulDisplay.log b/src/Specific/solinas32_2e141m9_7limbs/femulDisplay.log
new file mode 100644
index 000000000..3e7f9e0e4
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0x9 * ((uint64_t)x14 * x26)));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x9 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0x9 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x9 * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x9 * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x9 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ uint64_t x37 = (x35 + x33);
+ uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ uint64_t x40 = (x38 + x32);
+ uint32_t x41 = (uint32_t) (x40 >> 0x14);
+ uint32_t x42 = ((uint32_t)x40 & 0xfffff);
+ uint64_t x43 = (x41 + x31);
+ uint32_t x44 = (uint32_t) (x43 >> 0x14);
+ uint32_t x45 = ((uint32_t)x43 & 0xfffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x14);
+ uint32_t x48 = ((uint32_t)x46 & 0xfffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x14);
+ uint32_t x51 = ((uint32_t)x49 & 0xfffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x14);
+ uint32_t x54 = ((uint32_t)x52 & 0xfffff);
+ uint32_t x55 = (x36 + (0x9 * x53));
+ uint32_t x56 = (x55 >> 0x15);
+ uint32_t x57 = (x55 & 0x1fffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x14);
+ uint32_t x60 = (x58 & 0xfffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesquare.c b/src/Specific/solinas32_2e141m9_7limbs/fesquare.c
new file mode 100644
index 000000000..4ebaaa757
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * ((uint64_t)x11 * x11)));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint32_t x20 = (uint32_t) (x19 >> 0x15);
+ { uint32_t x21 = ((uint32_t)x19 & 0x1fffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint32_t x23 = (uint32_t) (x22 >> 0x14);
+ { uint32_t x24 = ((uint32_t)x22 & 0xfffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x14);
+ { uint32_t x27 = ((uint32_t)x25 & 0xfffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x14);
+ { uint32_t x30 = ((uint32_t)x28 & 0xfffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x14);
+ { uint32_t x33 = ((uint32_t)x31 & 0xfffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x14);
+ { uint32_t x36 = ((uint32_t)x34 & 0xfffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ { uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ { uint32_t x40 = (x21 + (0x9 * x38));
+ { uint32_t x41 = (x40 >> 0x15);
+ { uint32_t x42 = (x40 & 0x1fffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x14);
+ { uint32_t x45 = (x43 & 0xfffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..eb2db8f40
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * ((uint64_t)x11 * x11)));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint32_t x20 = (uint32_t) (x19 >> 0x15);
+ uint32_t x21 = ((uint32_t)x19 & 0x1fffff);
+ uint64_t x22 = (x20 + x18);
+ uint32_t x23 = (uint32_t) (x22 >> 0x14);
+ uint32_t x24 = ((uint32_t)x22 & 0xfffff);
+ uint64_t x25 = (x23 + x17);
+ uint32_t x26 = (uint32_t) (x25 >> 0x14);
+ uint32_t x27 = ((uint32_t)x25 & 0xfffff);
+ uint64_t x28 = (x26 + x16);
+ uint32_t x29 = (uint32_t) (x28 >> 0x14);
+ uint32_t x30 = ((uint32_t)x28 & 0xfffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x14);
+ uint32_t x33 = ((uint32_t)x31 & 0xfffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x14);
+ uint32_t x36 = ((uint32_t)x34 & 0xfffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ uint32_t x40 = (x21 + (0x9 * x38));
+ uint32_t x41 = (x40 >> 0x15);
+ uint32_t x42 = (x40 & 0x1fffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x14);
+ uint32_t x45 = (x43 & 0xfffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesub.c b/src/Specific/solinas32_2e141m9_7limbs/fesub.c
new file mode 100644
index 000000000..a1ead2aa0
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0x3fffee + x5) - x17);
+ out[1] = ((0x1ffffe + x7) - x19);
+ out[2] = ((0x1ffffe + x9) - x21);
+ out[3] = ((0x1ffffe + x11) - x23);
+ out[4] = ((0x1ffffe + x13) - x25);
+ out[5] = ((0x1ffffe + x15) - x27);
+ out[6] = ((0x1ffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..346dcca70
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x1ffffe + x14) - x26), ((0x1ffffe + x15) - x27), ((0x1ffffe + x13) - x25), ((0x1ffffe + x11) - x23), ((0x1ffffe + x9) - x21), ((0x1ffffe + x7) - x19), ((0x3fffee + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_7limbs/freeze.c b/src/Specific/solinas32_2e141m9_7limbs/freeze.c
new file mode 100644
index 000000000..26cae0fa5
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffff7);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xfffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xfffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xfffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xfffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0x1ffff7);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0xfffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0xfffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0xfffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0xfffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0xfffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0xfffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..230b59dc9
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffff7);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xfffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xfffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xfffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xfffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0x1ffff7);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0xfffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0xfffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0xfffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0xfffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0xfffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0xfffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_7limbs/feadd.c b/src/Specific/solinas32_2e150m3_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_7limbs/femul.c b/src/Specific/solinas32_2e150m3_7limbs/femul.c
new file mode 100644
index 000000000..e8e91f157
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x3 * ((uint64_t)x14 * x26)));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x3 * (((uint64_t)x13 * x26) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x3 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x3 * (((uint64_t)x9 * x26) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x14 * x21)))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x3 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x15);
+ { uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
+ { uint32_t x55 = (x36 + (0x3 * x53));
+ { uint32_t x56 = (x55 >> 0x16);
+ { uint32_t x57 = (x55 & 0x3fffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x15);
+ { uint32_t x60 = (x58 & 0x1fffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_7limbs/femulDisplay.log b/src/Specific/solinas32_2e150m3_7limbs/femulDisplay.log
new file mode 100644
index 000000000..a122fdd87
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x3 * ((uint64_t)x14 * x26)));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x3 * (((uint64_t)x13 * x26) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x3 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x3 * (((uint64_t)x9 * x26) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x14 * x21)))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x3 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x33);
+ uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ uint64_t x40 = (x38 + x32);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x31);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x15);
+ uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
+ uint32_t x55 = (x36 + (0x3 * x53));
+ uint32_t x56 = (x55 >> 0x16);
+ uint32_t x57 = (x55 & 0x3fffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x15);
+ uint32_t x60 = (x58 & 0x1fffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesquare.c b/src/Specific/solinas32_2e150m3_7limbs/fesquare.c
new file mode 100644
index 000000000..21212e541
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * ((uint64_t)x11 * x11)));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x11) + ((0x2 * ((uint64_t)x12 * x12)) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x11) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((uint64_t)x11 * x6)))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint32_t x20 = (uint32_t) (x19 >> 0x16);
+ { uint32_t x21 = ((uint32_t)x19 & 0x3fffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint32_t x23 = (uint32_t) (x22 >> 0x15);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x15);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ { uint32_t x40 = (x21 + (0x3 * x38));
+ { uint32_t x41 = (x40 >> 0x16);
+ { uint32_t x42 = (x40 & 0x3fffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x15);
+ { uint32_t x45 = (x43 & 0x1fffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..b775e6872
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * ((uint64_t)x11 * x11)));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x11) + ((0x2 * ((uint64_t)x12 * x12)) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x11) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((uint64_t)x11 * x6)))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint32_t x20 = (uint32_t) (x19 >> 0x16);
+ uint32_t x21 = ((uint32_t)x19 & 0x3fffff);
+ uint64_t x22 = (x20 + x18);
+ uint32_t x23 = (uint32_t) (x22 >> 0x15);
+ uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
+ uint64_t x25 = (x23 + x17);
+ uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x16);
+ uint32_t x29 = (uint32_t) (x28 >> 0x15);
+ uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ uint32_t x40 = (x21 + (0x3 * x38));
+ uint32_t x41 = (x40 >> 0x16);
+ uint32_t x42 = (x40 & 0x3fffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x15);
+ uint32_t x45 = (x43 & 0x1fffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesub.c b/src/Specific/solinas32_2e150m3_7limbs/fesub.c
new file mode 100644
index 000000000..e1a68d76d
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((Const 8388602 + x5) - x17);
+ out[1] = ((0x3ffffe + x7) - x19);
+ out[2] = ((0x7ffffe + x9) - x21);
+ out[3] = ((0x3ffffe + x11) - x23);
+ out[4] = ((0x7ffffe + x13) - x25);
+ out[5] = ((0x3ffffe + x15) - x27);
+ out[6] = ((0x3ffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..02ad117dc
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x3ffffe + x14) - x26), ((0x3ffffe + x15) - x27), ((0x7ffffe + x13) - x25), ((0x3ffffe + x11) - x23), ((0x7ffffe + x9) - x21), ((0x3ffffe + x7) - x19), ((Const 8388602 + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_7limbs/freeze.c b/src/Specific/solinas32_2e150m3_7limbs/freeze.c
new file mode 100644
index 000000000..225ed3167
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194301);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1fffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1fffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & Const 4194301);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x1fffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x3fffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x1fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x3fffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x1fffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x1fffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..611398eb3
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194301);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1fffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1fffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & Const 4194301);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x1fffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x3fffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x1fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x3fffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x1fffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x1fffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_7limbs/feadd.c b/src/Specific/solinas32_2e150m5_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_7limbs/femul.c b/src/Specific/solinas32_2e150m5_7limbs/femul.c
new file mode 100644
index 000000000..267c331ee
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x5 * ((uint64_t)x14 * x26)));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x5 * (((uint64_t)x13 * x26) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x5 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x5 * (((uint64_t)x9 * x26) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x14 * x21)))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x5 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x15);
+ { uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
+ { uint32_t x55 = (x36 + (0x5 * x53));
+ { uint32_t x56 = (x55 >> 0x16);
+ { uint32_t x57 = (x55 & 0x3fffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x15);
+ { uint32_t x60 = (x58 & 0x1fffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_7limbs/femulDisplay.log b/src/Specific/solinas32_2e150m5_7limbs/femulDisplay.log
new file mode 100644
index 000000000..05cfd1066
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x5 * ((uint64_t)x14 * x26)));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x5 * (((uint64_t)x13 * x26) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x5 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x5 * (((uint64_t)x9 * x26) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x14 * x21)))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x5 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x33);
+ uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ uint64_t x40 = (x38 + x32);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x31);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x15);
+ uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
+ uint32_t x55 = (x36 + (0x5 * x53));
+ uint32_t x56 = (x55 >> 0x16);
+ uint32_t x57 = (x55 & 0x3fffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x15);
+ uint32_t x60 = (x58 & 0x1fffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesquare.c b/src/Specific/solinas32_2e150m5_7limbs/fesquare.c
new file mode 100644
index 000000000..e29bdb4c9
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * ((uint64_t)x11 * x11)));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x11) + ((0x2 * ((uint64_t)x12 * x12)) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x11) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((uint64_t)x11 * x6)))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint32_t x20 = (uint32_t) (x19 >> 0x16);
+ { uint32_t x21 = ((uint32_t)x19 & 0x3fffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint32_t x23 = (uint32_t) (x22 >> 0x15);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x15);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ { uint32_t x40 = (x21 + (0x5 * x38));
+ { uint32_t x41 = (x40 >> 0x16);
+ { uint32_t x42 = (x40 & 0x3fffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x15);
+ { uint32_t x45 = (x43 & 0x1fffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..22a3d37df
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * ((uint64_t)x11 * x11)));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x11) + ((0x2 * ((uint64_t)x12 * x12)) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x11) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((uint64_t)x11 * x6)))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint32_t x20 = (uint32_t) (x19 >> 0x16);
+ uint32_t x21 = ((uint32_t)x19 & 0x3fffff);
+ uint64_t x22 = (x20 + x18);
+ uint32_t x23 = (uint32_t) (x22 >> 0x15);
+ uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
+ uint64_t x25 = (x23 + x17);
+ uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x16);
+ uint32_t x29 = (uint32_t) (x28 >> 0x15);
+ uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ uint32_t x40 = (x21 + (0x5 * x38));
+ uint32_t x41 = (x40 >> 0x16);
+ uint32_t x42 = (x40 & 0x3fffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x15);
+ uint32_t x45 = (x43 & 0x1fffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesub.c b/src/Specific/solinas32_2e150m5_7limbs/fesub.c
new file mode 100644
index 000000000..def03b357
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0x7ffff6 + x5) - x17);
+ out[1] = ((0x3ffffe + x7) - x19);
+ out[2] = ((0x7ffffe + x9) - x21);
+ out[3] = ((0x3ffffe + x11) - x23);
+ out[4] = ((0x7ffffe + x13) - x25);
+ out[5] = ((0x3ffffe + x15) - x27);
+ out[6] = ((0x3ffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..a9be237c2
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x3ffffe + x14) - x26), ((0x3ffffe + x15) - x27), ((0x7ffffe + x13) - x25), ((0x3ffffe + x11) - x23), ((0x7ffffe + x9) - x21), ((0x3ffffe + x7) - x19), ((0x7ffff6 + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_7limbs/freeze.c b/src/Specific/solinas32_2e150m5_7limbs/freeze.c
new file mode 100644
index 000000000..1eee5b658
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffb);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1fffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1fffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0x3ffffb);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x1fffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x3fffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x1fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x3fffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x1fffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x1fffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..15ce74d4b
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffb);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1fffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1fffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0x3ffffb);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x1fffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x3fffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x1fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x3fffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x1fffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x1fffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_7limbs/feadd.c b/src/Specific/solinas32_2e152m17_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_7limbs/femul.c b/src/Specific/solinas32_2e152m17_7limbs/femul.c
new file mode 100644
index 000000000..4e37d78d5
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x11 * (0x2 * ((uint64_t)x14 * x26))));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x11 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x11 * ((0x2 * ((uint64_t)x11 * x26)) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (0x2 * ((uint64_t)x14 * x23)))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x11 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x11 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x16);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x15);
+ { uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
+ { uint64_t x55 = (x36 + ((uint64_t)0x11 * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x16);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x16);
+ { uint32_t x60 = (x58 & 0x3fffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_7limbs/femulDisplay.log b/src/Specific/solinas32_2e152m17_7limbs/femulDisplay.log
new file mode 100644
index 000000000..8f2c23481
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x11 * (0x2 * ((uint64_t)x14 * x26))));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x11 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x11 * ((0x2 * ((uint64_t)x11 * x26)) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (0x2 * ((uint64_t)x14 * x23)))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x11 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x11 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x33);
+ uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ uint64_t x40 = (x38 + x32);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x31);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x16);
+ uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x15);
+ uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
+ uint64_t x55 = (x36 + ((uint64_t)0x11 * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x16);
+ uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x16);
+ uint32_t x60 = (x58 & 0x3fffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesquare.c b/src/Specific/solinas32_2e152m17_7limbs/fesquare.c
new file mode 100644
index 000000000..f25e30e0d
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (0x2 * ((uint64_t)x11 * x11))));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x11)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (0x2 * ((uint64_t)x11 * x8)))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x16);
+ { uint32_t x21 = ((uint32_t)x19 & 0x3fffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint32_t x23 = (uint32_t) (x22 >> 0x16);
+ { uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x15);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ { uint64_t x40 = (x21 + ((uint64_t)0x11 * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x16);
+ { uint32_t x45 = (x43 & 0x3fffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..e4acf0c76
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (0x2 * ((uint64_t)x11 * x11))));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x11)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (0x2 * ((uint64_t)x11 * x8)))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x16);
+ uint32_t x21 = ((uint32_t)x19 & 0x3fffff);
+ uint64_t x22 = (x20 + x18);
+ uint32_t x23 = (uint32_t) (x22 >> 0x16);
+ uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ uint64_t x25 = (x23 + x17);
+ uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x16);
+ uint32_t x29 = (uint32_t) (x28 >> 0x15);
+ uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x15);
+ uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ uint64_t x40 = (x21 + ((uint64_t)0x11 * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x16);
+ uint32_t x45 = (x43 & 0x3fffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesub.c b/src/Specific/solinas32_2e152m17_7limbs/fesub.c
new file mode 100644
index 000000000..d5ab3c216
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0x7fffde + x5) - x17);
+ out[1] = ((0x7ffffe + x7) - x19);
+ out[2] = ((0x7ffffe + x9) - x21);
+ out[3] = ((0x3ffffe + x11) - x23);
+ out[4] = ((0x7ffffe + x13) - x25);
+ out[5] = ((0x7ffffe + x15) - x27);
+ out[6] = ((0x3ffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..4c35b7065
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x3ffffe + x14) - x26), ((0x7ffffe + x15) - x27), ((0x7ffffe + x13) - x25), ((0x3ffffe + x11) - x23), ((0x7ffffe + x9) - x21), ((0x7ffffe + x7) - x19), ((0x7fffde + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_7limbs/freeze.c b/src/Specific/solinas32_2e152m17_7limbs/freeze.c
new file mode 100644
index 000000000..51d8576f3
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffef);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0x3fffef);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x3fffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x3fffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x1fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x3fffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x3fffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x1fffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..6c155f863
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffef);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0x3fffef);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x3fffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x3fffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x1fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x3fffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x3fffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x1fffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_7limbs/feadd.c b/src/Specific/solinas32_2e158m15_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_7limbs/femul.c b/src/Specific/solinas32_2e158m15_7limbs/femul.c
new file mode 100644
index 000000000..9df0827b0
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((0x2 * ((uint64_t)x13 * x21)) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0xf * (0x2 * ((uint64_t)x14 * x26))));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((0x2 * ((uint64_t)x9 * x21)) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0xf * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0xf * ((0x2 * ((uint64_t)x13 * x26)) + (((uint64_t)x15 * x27) + (0x2 * ((uint64_t)x14 * x25))))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0xf * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0xf * ((0x2 * ((uint64_t)x9 * x26)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + (0x2 * ((uint64_t)x14 * x21))))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0xf * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x17);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ { uint64_t x55 = (x36 + ((uint64_t)0xf * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x17);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x17);
+ { uint32_t x60 = (x58 & 0x7fffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_7limbs/femulDisplay.log b/src/Specific/solinas32_2e158m15_7limbs/femulDisplay.log
new file mode 100644
index 000000000..b5935c279
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((0x2 * ((uint64_t)x13 * x21)) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0xf * (0x2 * ((uint64_t)x14 * x26))));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((0x2 * ((uint64_t)x9 * x21)) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0xf * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0xf * ((0x2 * ((uint64_t)x13 * x26)) + (((uint64_t)x15 * x27) + (0x2 * ((uint64_t)x14 * x25))))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0xf * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0xf * ((0x2 * ((uint64_t)x9 * x26)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + (0x2 * ((uint64_t)x14 * x21))))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0xf * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x17);
+ uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x31);
+ uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ uint64_t x55 = (x36 + ((uint64_t)0xf * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x17);
+ uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x17);
+ uint32_t x60 = (x58 & 0x7fffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesquare.c b/src/Specific/solinas32_2e158m15_7limbs/fesquare.c
new file mode 100644
index 000000000..e7d45d069
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * (0x2 * ((uint64_t)x11 * x11))));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x11)) + (((uint64_t)x12 * x12) + (0x2 * ((uint64_t)x11 * x10))))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * ((0x2 * ((uint64_t)x6 * x11)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (0x2 * ((uint64_t)x11 * x6))))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x17);
+ { uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint64_t x23 = (x22 >> 0x17);
+ { uint32_t x24 = ((uint32_t)x22 & 0x7fffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint64_t x26 = (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x17);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x17);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ { uint64_t x40 = (x21 + ((uint64_t)0xf * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x17);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = (x43 & 0x7fffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..ac17ecbc2
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * (0x2 * ((uint64_t)x11 * x11))));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x11)) + (((uint64_t)x12 * x12) + (0x2 * ((uint64_t)x11 * x10))))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * ((0x2 * ((uint64_t)x6 * x11)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (0x2 * ((uint64_t)x11 * x6))))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x17);
+ uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
+ uint64_t x22 = (x20 + x18);
+ uint64_t x23 = (x22 >> 0x17);
+ uint32_t x24 = ((uint32_t)x22 & 0x7fffff);
+ uint64_t x25 = (x23 + x17);
+ uint64_t x26 = (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x16);
+ uint32_t x29 = (uint32_t) (x28 >> 0x17);
+ uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x16);
+ uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x17);
+ uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ uint64_t x40 = (x21 + ((uint64_t)0xf * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x17);
+ uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x17);
+ uint32_t x45 = (x43 & 0x7fffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesub.c b/src/Specific/solinas32_2e158m15_7limbs/fesub.c
new file mode 100644
index 000000000..588ef10cb
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((Const 16777186 + x5) - x17);
+ out[1] = ((0xfffffe + x7) - x19);
+ out[2] = ((0x7ffffe + x9) - x21);
+ out[3] = ((0xfffffe + x11) - x23);
+ out[4] = ((0x7ffffe + x13) - x25);
+ out[5] = ((0xfffffe + x15) - x27);
+ out[6] = ((0x7ffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..036887e07
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x7ffffe + x14) - x26), ((0xfffffe + x15) - x27), ((0x7ffffe + x13) - x25), ((0xfffffe + x11) - x23), ((0x7ffffe + x9) - x21), ((0xfffffe + x7) - x19), ((Const 16777186 + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_7limbs/freeze.c b/src/Specific/solinas32_2e158m15_7limbs/freeze.c
new file mode 100644
index 000000000..319c1fb58
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388593);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & Const 8388593);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x7fffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x3fffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x7fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x3fffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x7fffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x3fffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..954c9c062
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388593);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & Const 8388593);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x7fffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x3fffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x7fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x3fffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x7fffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x3fffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_7limbs/feadd.c b/src/Specific/solinas32_2e165m25_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_7limbs/femul.c b/src/Specific/solinas32_2e165m25_7limbs/femul.c
new file mode 100644
index 000000000..fe4322931
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((0x2 * ((uint64_t)x13 * x21)) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0x19 * (0x2 * ((uint64_t)x14 * x26))));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((0x2 * ((uint64_t)x9 * x21)) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x19 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x26)) + (((uint64_t)x15 * x27) + (0x2 * ((uint64_t)x14 * x25))))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x19 * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x19 * ((0x2 * ((uint64_t)x9 * x26)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + (0x2 * ((uint64_t)x14 * x21))))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x19 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x17);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint64_t x47 = (x46 >> 0x17);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x36 + ((uint64_t)0x19 * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = (x58 & 0xffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_7limbs/femulDisplay.log b/src/Specific/solinas32_2e165m25_7limbs/femulDisplay.log
new file mode 100644
index 000000000..372c83a54
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((0x2 * ((uint64_t)x13 * x21)) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0x19 * (0x2 * ((uint64_t)x14 * x26))));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((0x2 * ((uint64_t)x9 * x21)) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x19 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x26)) + (((uint64_t)x15 * x27) + (0x2 * ((uint64_t)x14 * x25))))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x19 * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x19 * ((0x2 * ((uint64_t)x9 * x26)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + (0x2 * ((uint64_t)x14 * x21))))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x19 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x17);
+ uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x44 + x30);
+ uint64_t x47 = (x46 >> 0x17);
+ uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x36 + ((uint64_t)0x19 * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x18);
+ uint32_t x60 = (x58 & 0xffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesquare.c b/src/Specific/solinas32_2e165m25_7limbs/fesquare.c
new file mode 100644
index 000000000..5974ee820
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * (0x2 * ((uint64_t)x11 * x11))));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x11)) + (((uint64_t)x12 * x12) + (0x2 * ((uint64_t)x11 * x10))))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x11)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (0x2 * ((uint64_t)x11 * x6))))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x18);
+ { uint32_t x21 = ((uint32_t)x19 & 0xffffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint64_t x23 = (x22 >> 0x18);
+ { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint64_t x26 = (x25 >> 0x17);
+ { uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint64_t x29 = (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint64_t x32 = (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x21 + ((uint64_t)0x19 * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = (x43 & 0xffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..45b8ae257
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * (0x2 * ((uint64_t)x11 * x11))));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x11)) + (((uint64_t)x12 * x12) + (0x2 * ((uint64_t)x11 * x10))))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x11)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (0x2 * ((uint64_t)x11 * x6))))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x18);
+ uint32_t x21 = ((uint32_t)x19 & 0xffffff);
+ uint64_t x22 = (x20 + x18);
+ uint64_t x23 = (x22 >> 0x18);
+ uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ uint64_t x25 = (x23 + x17);
+ uint64_t x26 = (x25 >> 0x17);
+ uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
+ uint64_t x28 = (x26 + x16);
+ uint64_t x29 = (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x15);
+ uint64_t x32 = (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x21 + ((uint64_t)0x19 * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x18);
+ uint32_t x45 = (x43 & 0xffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesub.c b/src/Specific/solinas32_2e165m25_7limbs/fesub.c
new file mode 100644
index 000000000..d942986f0
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0x1ffffce + x5) - x17);
+ out[1] = ((0x1fffffe + x7) - x19);
+ out[2] = ((0xfffffe + x9) - x21);
+ out[3] = ((0x1fffffe + x11) - x23);
+ out[4] = ((0xfffffe + x13) - x25);
+ out[5] = ((0x1fffffe + x15) - x27);
+ out[6] = ((0xfffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..0faebe502
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0xfffffe + x14) - x26), ((0x1fffffe + x15) - x27), ((0xfffffe + x13) - x25), ((0x1fffffe + x11) - x23), ((0xfffffe + x9) - x21), ((0x1fffffe + x7) - x19), ((0x1ffffce + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_7limbs/freeze.c b/src/Specific/solinas32_2e165m25_7limbs/freeze.c
new file mode 100644
index 000000000..051d61bd2
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe7);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7fffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7fffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0xffffe7);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0xffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x7fffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0xffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x7fffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0xffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x7fffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..10c311d95
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe7);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7fffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7fffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0xffffe7);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0xffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x7fffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0xffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x7fffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0xffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x7fffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_8limbs/feadd.c b/src/Specific/solinas32_2e165m25_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_8limbs/femul.c b/src/Specific/solinas32_2e165m25_8limbs/femul.c
new file mode 100644
index 000000000..0150266c6
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x19 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x19 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x19 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x19 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x19 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x19 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x15);
+ { uint32_t x41 = ((uint32_t)x39 & 0x1fffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint32_t x43 = (uint32_t) (x42 >> 0x15);
+ { uint32_t x44 = ((uint32_t)x42 & 0x1fffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint32_t x46 = (uint32_t) (x45 >> 0x14);
+ { uint32_t x47 = ((uint32_t)x45 & 0xfffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint32_t x49 = (uint32_t) (x48 >> 0x15);
+ { uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint32_t x52 = (uint32_t) (x51 >> 0x15);
+ { uint32_t x53 = ((uint32_t)x51 & 0x1fffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint32_t x55 = (uint32_t) (x54 >> 0x14);
+ { uint32_t x56 = ((uint32_t)x54 & 0xfffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint32_t x58 = (uint32_t) (x57 >> 0x15);
+ { uint32_t x59 = ((uint32_t)x57 & 0x1fffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x14);
+ { uint32_t x62 = ((uint32_t)x60 & 0xfffff);
+ { uint64_t x63 = (x41 + ((uint64_t)0x19 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x15);
+ { uint32_t x65 = ((uint32_t)x63 & 0x1fffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x15);
+ { uint32_t x68 = (x66 & 0x1fffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_8limbs/femulDisplay.log b/src/Specific/solinas32_2e165m25_8limbs/femulDisplay.log
new file mode 100644
index 000000000..3c46f018f
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x19 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x19 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x19 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x19 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x19 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x19 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x15);
+ uint32_t x41 = ((uint32_t)x39 & 0x1fffff);
+ uint64_t x42 = (x40 + x38);
+ uint32_t x43 = (uint32_t) (x42 >> 0x15);
+ uint32_t x44 = ((uint32_t)x42 & 0x1fffff);
+ uint64_t x45 = (x43 + x37);
+ uint32_t x46 = (uint32_t) (x45 >> 0x14);
+ uint32_t x47 = ((uint32_t)x45 & 0xfffff);
+ uint64_t x48 = (x46 + x36);
+ uint32_t x49 = (uint32_t) (x48 >> 0x15);
+ uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ uint64_t x51 = (x49 + x35);
+ uint32_t x52 = (uint32_t) (x51 >> 0x15);
+ uint32_t x53 = ((uint32_t)x51 & 0x1fffff);
+ uint64_t x54 = (x52 + x34);
+ uint32_t x55 = (uint32_t) (x54 >> 0x14);
+ uint32_t x56 = ((uint32_t)x54 & 0xfffff);
+ uint64_t x57 = (x55 + x33);
+ uint32_t x58 = (uint32_t) (x57 >> 0x15);
+ uint32_t x59 = ((uint32_t)x57 & 0x1fffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x14);
+ uint32_t x62 = ((uint32_t)x60 & 0xfffff);
+ uint64_t x63 = (x41 + ((uint64_t)0x19 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x15);
+ uint32_t x65 = ((uint32_t)x63 & 0x1fffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x15);
+ uint32_t x68 = (x66 & 0x1fffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesquare.c b/src/Specific/solinas32_2e165m25_8limbs/fesquare.c
new file mode 100644
index 000000000..5bae4d373
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x15);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x15);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x14);
+ { uint32_t x30 = ((uint32_t)x28 & 0xfffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x15);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ { uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x15);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x14);
+ { uint32_t x45 = ((uint32_t)x43 & 0xfffff);
+ { uint64_t x46 = (x24 + ((uint64_t)0x19 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x15);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x15);
+ { uint32_t x51 = (x49 & 0x1fffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..718555371
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x15);
+ uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
+ uint64_t x25 = (x23 + x21);
+ uint32_t x26 = (uint32_t) (x25 >> 0x15);
+ uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
+ uint64_t x28 = (x26 + x20);
+ uint32_t x29 = (uint32_t) (x28 >> 0x14);
+ uint32_t x30 = ((uint32_t)x28 & 0xfffff);
+ uint64_t x31 = (x29 + x19);
+ uint32_t x32 = (uint32_t) (x31 >> 0x15);
+ uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ uint64_t x34 = (x32 + x18);
+ uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ uint64_t x37 = (x35 + x17);
+ uint32_t x38 = (uint32_t) (x37 >> 0x14);
+ uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ uint64_t x40 = (x38 + x16);
+ uint32_t x41 = (uint32_t) (x40 >> 0x15);
+ uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x14);
+ uint32_t x45 = ((uint32_t)x43 & 0xfffff);
+ uint64_t x46 = (x24 + ((uint64_t)0x19 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x15);
+ uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x15);
+ uint32_t x51 = (x49 & 0x1fffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesub.c b/src/Specific/solinas32_2e165m25_8limbs/fesub.c
new file mode 100644
index 000000000..d5d2774bb
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((Const 4194254 + x5) - x19);
+ out[1] = ((0x3ffffe + x7) - x21);
+ out[2] = ((0x1ffffe + x9) - x23);
+ out[3] = ((0x3ffffe + x11) - x25);
+ out[4] = ((0x3ffffe + x13) - x27);
+ out[5] = ((0x1ffffe + x15) - x29);
+ out[6] = ((0x3ffffe + x17) - x31);
+ out[7] = ((0x1ffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..7f8624d69
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x1ffffe + x16) - x30), ((0x3ffffe + x17) - x31), ((0x1ffffe + x15) - x29), ((0x3ffffe + x13) - x27), ((0x3ffffe + x11) - x25), ((0x1ffffe + x9) - x23), ((0x3ffffe + x7) - x21), ((Const 4194254 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25_8limbs/freeze.c b/src/Specific/solinas32_2e165m25_8limbs/freeze.c
new file mode 100644
index 000000000..10da45359
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffe7);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1fffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1fffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & 0x1fffe7);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0x1fffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0xfffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0x1fffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x1fffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0xfffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x1fffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0xfffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..8f9d23fc0
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffe7);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1fffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1fffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & 0x1fffe7);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0x1fffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0xfffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0x1fffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x1fffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0xfffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x1fffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0xfffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_7limbs/feadd.c b/src/Specific/solinas32_2e166m5_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_7limbs/femul.c b/src/Specific/solinas32_2e166m5_7limbs/femul.c
new file mode 100644
index 000000000..46284e56c
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x5 * (0x2 * ((uint64_t)x14 * x26))));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x5 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x5 * ((0x2 * ((uint64_t)x11 * x26)) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (0x2 * ((uint64_t)x14 * x23)))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x5 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x5 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x36 + ((uint64_t)0x5 * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = (x58 & 0xffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_7limbs/femulDisplay.log b/src/Specific/solinas32_2e166m5_7limbs/femulDisplay.log
new file mode 100644
index 000000000..cf11b11d3
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x5 * (0x2 * ((uint64_t)x14 * x26))));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x5 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x5 * ((0x2 * ((uint64_t)x11 * x26)) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (0x2 * ((uint64_t)x14 * x23)))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x5 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x5 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x32);
+ uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x36 + ((uint64_t)0x5 * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x18);
+ uint32_t x60 = (x58 & 0xffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesquare.c b/src/Specific/solinas32_2e166m5_7limbs/fesquare.c
new file mode 100644
index 000000000..d8040ca45
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * (0x2 * ((uint64_t)x11 * x11))));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x11)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (0x2 * ((uint64_t)x11 * x8)))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x18);
+ { uint32_t x21 = ((uint32_t)x19 & 0xffffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint64_t x23 = (x22 >> 0x18);
+ { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x18);
+ { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint64_t x29 = (x28 >> 0x17);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x21 + ((uint64_t)0x5 * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = (x43 & 0xffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..ce68539e0
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * (0x2 * ((uint64_t)x11 * x11))));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x11)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (0x2 * ((uint64_t)x11 * x8)))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x18);
+ uint32_t x21 = ((uint32_t)x19 & 0xffffff);
+ uint64_t x22 = (x20 + x18);
+ uint64_t x23 = (x22 >> 0x18);
+ uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ uint64_t x25 = (x23 + x17);
+ uint32_t x26 = (uint32_t) (x25 >> 0x18);
+ uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ uint64_t x28 = (x26 + x16);
+ uint64_t x29 = (x28 >> 0x17);
+ uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x21 + ((uint64_t)0x5 * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x18);
+ uint32_t x45 = (x43 & 0xffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesub.c b/src/Specific/solinas32_2e166m5_7limbs/fesub.c
new file mode 100644
index 000000000..7a259152d
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((Const 33554422 + x5) - x17);
+ out[1] = ((0x1fffffe + x7) - x19);
+ out[2] = ((0x1fffffe + x9) - x21);
+ out[3] = ((0xfffffe + x11) - x23);
+ out[4] = ((0x1fffffe + x13) - x25);
+ out[5] = ((0x1fffffe + x15) - x27);
+ out[6] = ((0xfffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..473469aee
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0xfffffe + x14) - x26), ((0x1fffffe + x15) - x27), ((0x1fffffe + x13) - x25), ((0xfffffe + x11) - x23), ((0x1fffffe + x9) - x21), ((0x1fffffe + x7) - x19), ((Const 33554422 + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_7limbs/freeze.c b/src/Specific/solinas32_2e166m5_7limbs/freeze.c
new file mode 100644
index 000000000..8335bdcd5
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777211);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xffffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7fffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & Const 16777211);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0xffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0xffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x7fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0xffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0xffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x7fffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..7fdd22346
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777211);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xffffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7fffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & Const 16777211);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0xffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0xffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x7fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0xffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0xffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x7fffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_7limbs/feadd.c b/src/Specific/solinas32_2e171m19_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_7limbs/femul.c b/src/Specific/solinas32_2e171m19_7limbs/femul.c
new file mode 100644
index 000000000..eef6341e2
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x13 * ((uint64_t)x14 * x26)));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x13 * (((uint64_t)x13 * x26) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x13 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x13 * (((uint64_t)x9 * x26) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x14 * x21)))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x13 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x36 + ((uint64_t)0x13 * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x19);
+ { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = (x58 & 0xffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_7limbs/femulDisplay.log b/src/Specific/solinas32_2e171m19_7limbs/femulDisplay.log
new file mode 100644
index 000000000..e7a3b6138
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + (((uint64_t)x9 * x25) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x13 * ((uint64_t)x14 * x26)));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x13 * (((uint64_t)x13 * x26) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0x13 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x13 * (((uint64_t)x9 * x26) + ((0x2 * ((uint64_t)x11 * x27)) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x14 * x21)))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x13 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x44 + x30);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x29);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x28);
+ uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x36 + ((uint64_t)0x13 * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x19);
+ uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x18);
+ uint32_t x60 = (x58 & 0xffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesquare.c b/src/Specific/solinas32_2e171m19_7limbs/fesquare.c
new file mode 100644
index 000000000..9e3e5027f
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * ((uint64_t)x11 * x11)));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x11) + ((0x2 * ((uint64_t)x12 * x12)) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x11) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((uint64_t)x11 * x6)))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x19);
+ { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint64_t x23 = (x22 >> 0x18);
+ { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint64_t x26 = (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint64_t x29 = (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint64_t x32 = (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x21 + ((uint64_t)0x13 * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = (x43 & 0xffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..2a3b5a1ba
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * ((uint64_t)x11 * x11)));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x11) + ((0x2 * ((uint64_t)x12 * x12)) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x11) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((uint64_t)x11 * x6)))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x19);
+ uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ uint64_t x22 = (x20 + x18);
+ uint64_t x23 = (x22 >> 0x18);
+ uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ uint64_t x25 = (x23 + x17);
+ uint64_t x26 = (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x16);
+ uint64_t x29 = (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x15);
+ uint64_t x32 = (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x32 + x14);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x13);
+ uint32_t x38 = (uint32_t) (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x21 + ((uint64_t)0x13 * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x18);
+ uint32_t x45 = (x43 & 0xffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesub.c b/src/Specific/solinas32_2e171m19_7limbs/fesub.c
new file mode 100644
index 000000000..244cdc672
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0x3ffffda + x5) - x17);
+ out[1] = ((0x1fffffe + x7) - x19);
+ out[2] = ((0x3fffffe + x9) - x21);
+ out[3] = ((0x1fffffe + x11) - x23);
+ out[4] = ((0x3fffffe + x13) - x25);
+ out[5] = ((0x1fffffe + x15) - x27);
+ out[6] = ((0x1fffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..03744fcef
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x1fffffe + x14) - x26), ((0x1fffffe + x15) - x27), ((0x3fffffe + x13) - x25), ((0x1fffffe + x11) - x23), ((0x3fffffe + x9) - x21), ((0x1fffffe + x7) - x19), ((0x3ffffda + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_7limbs/freeze.c b/src/Specific/solinas32_2e171m19_7limbs/freeze.c
new file mode 100644
index 000000000..11b9709db
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffed);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x1ffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xffffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0x1ffffed);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0xffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x1ffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0xffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x1ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0xffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0xffffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..0a73c24ea
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffed);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x1ffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xffffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0x1ffffed);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0xffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x1ffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0xffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x1ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0xffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0xffffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_8limbs/feadd.c b/src/Specific/solinas32_2e171m19_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_8limbs/femul.c b/src/Specific/solinas32_2e171m19_8limbs/femul.c
new file mode 100644
index 000000000..c0e89ad8a
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x13 * ((uint64_t)x16 * x30)));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((uint64_t)x15 * x19)))))) + (0x13 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x13 * (((uint64_t)x15 * x30) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x16 * x29)))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x13 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0x13 * ((0x2 * ((uint64_t)x11 * x30)) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x13 * (((uint64_t)x9 * x30) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x16 * x23))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x13 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x16);
+ { uint32_t x41 = ((uint32_t)x39 & 0x3fffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x15);
+ { uint32_t x44 = ((uint32_t)x42 & 0x1fffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint32_t x46 = (uint32_t) (x45 >> 0x16);
+ { uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint32_t x49 = (uint32_t) (x48 >> 0x15);
+ { uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint32_t x52 = (uint32_t) (x51 >> 0x15);
+ { uint32_t x53 = ((uint32_t)x51 & 0x1fffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint32_t x55 = (uint32_t) (x54 >> 0x16);
+ { uint32_t x56 = ((uint32_t)x54 & 0x3fffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint32_t x58 = (uint32_t) (x57 >> 0x15);
+ { uint32_t x59 = ((uint32_t)x57 & 0x1fffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x15);
+ { uint32_t x62 = ((uint32_t)x60 & 0x1fffff);
+ { uint64_t x63 = (x41 + ((uint64_t)0x13 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x16);
+ { uint32_t x65 = ((uint32_t)x63 & 0x3fffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x15);
+ { uint32_t x68 = (x66 & 0x1fffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_8limbs/femulDisplay.log b/src/Specific/solinas32_2e171m19_8limbs/femulDisplay.log
new file mode 100644
index 000000000..694a43540
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x13 * ((uint64_t)x16 * x30)));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((uint64_t)x15 * x19)))))) + (0x13 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x13 * (((uint64_t)x15 * x30) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x16 * x29)))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x13 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0x13 * ((0x2 * ((uint64_t)x11 * x30)) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x13 * (((uint64_t)x9 * x30) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x16 * x23))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x13 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x16);
+ uint32_t x41 = ((uint32_t)x39 & 0x3fffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x15);
+ uint32_t x44 = ((uint32_t)x42 & 0x1fffff);
+ uint64_t x45 = (x43 + x37);
+ uint32_t x46 = (uint32_t) (x45 >> 0x16);
+ uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
+ uint64_t x48 = (x46 + x36);
+ uint32_t x49 = (uint32_t) (x48 >> 0x15);
+ uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ uint64_t x51 = (x49 + x35);
+ uint32_t x52 = (uint32_t) (x51 >> 0x15);
+ uint32_t x53 = ((uint32_t)x51 & 0x1fffff);
+ uint64_t x54 = (x52 + x34);
+ uint32_t x55 = (uint32_t) (x54 >> 0x16);
+ uint32_t x56 = ((uint32_t)x54 & 0x3fffff);
+ uint64_t x57 = (x55 + x33);
+ uint32_t x58 = (uint32_t) (x57 >> 0x15);
+ uint32_t x59 = ((uint32_t)x57 & 0x1fffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x15);
+ uint32_t x62 = ((uint32_t)x60 & 0x1fffff);
+ uint64_t x63 = (x41 + ((uint64_t)0x13 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x16);
+ uint32_t x65 = ((uint32_t)x63 & 0x3fffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x15);
+ uint32_t x68 = (x66 & 0x1fffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesquare.c b/src/Specific/solinas32_2e171m19_8limbs/fesquare.c
new file mode 100644
index 000000000..aaefdc5ba
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * ((uint64_t)x13 * x13)));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x13) + ((0x2 * ((uint64_t)x14 * x14)) + ((uint64_t)x13 * x12)))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x13)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x13) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((uint64_t)x13 * x6))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x16);
+ { uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x15);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x16);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x15);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x15);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint64_t x46 = (x24 + ((uint64_t)0x13 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x15);
+ { uint32_t x51 = (x49 & 0x1fffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..a86d3ce95
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * ((uint64_t)x13 * x13)));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x13) + ((0x2 * ((uint64_t)x14 * x14)) + ((uint64_t)x13 * x12)))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x13)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x13) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((uint64_t)x13 * x6))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x16);
+ uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x15);
+ uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
+ uint64_t x28 = (x26 + x20);
+ uint32_t x29 = (uint32_t) (x28 >> 0x16);
+ uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ uint64_t x31 = (x29 + x19);
+ uint32_t x32 = (uint32_t) (x31 >> 0x15);
+ uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ uint64_t x34 = (x32 + x18);
+ uint32_t x35 = (uint32_t) (x34 >> 0x15);
+ uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ uint64_t x37 = (x35 + x17);
+ uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ uint64_t x40 = (x38 + x16);
+ uint32_t x41 = (uint32_t) (x40 >> 0x15);
+ uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint64_t x46 = (x24 + ((uint64_t)0x13 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x15);
+ uint32_t x51 = (x49 & 0x1fffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesub.c b/src/Specific/solinas32_2e171m19_8limbs/fesub.c
new file mode 100644
index 000000000..7a0b623f5
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((0x7fffda + x5) - x19);
+ out[1] = ((0x3ffffe + x7) - x21);
+ out[2] = ((0x7ffffe + x9) - x23);
+ out[3] = ((0x3ffffe + x11) - x25);
+ out[4] = ((0x3ffffe + x13) - x27);
+ out[5] = ((0x7ffffe + x15) - x29);
+ out[6] = ((0x3ffffe + x17) - x31);
+ out[7] = ((0x3ffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..5322f4754
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x3ffffe + x16) - x30), ((0x3ffffe + x17) - x31), ((0x7ffffe + x15) - x29), ((0x3ffffe + x13) - x27), ((0x3ffffe + x11) - x25), ((0x7ffffe + x9) - x23), ((0x3ffffe + x7) - x21), ((0x7fffda + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19_8limbs/freeze.c b/src/Specific/solinas32_2e171m19_8limbs/freeze.c
new file mode 100644
index 000000000..96d92326f
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffed);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1fffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1fffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1fffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & 0x3fffed);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0x1fffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x3fffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0x1fffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x1fffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x3fffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x1fffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x1fffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..0bcedc9dc
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffed);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1fffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1fffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1fffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & 0x3fffed);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0x1fffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x3fffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0x1fffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x1fffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x3fffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x1fffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x1fffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_7limbs/feadd.c b/src/Specific/solinas32_2e174m17_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_7limbs/femul.c b/src/Specific/solinas32_2e174m17_7limbs/femul.c
new file mode 100644
index 000000000..9f76b9380
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x11 * (0x2 * ((uint64_t)x14 * x26))));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x26)) + ((0x2 * ((uint64_t)x15 * x27)) + (0x2 * ((uint64_t)x14 * x25))))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x11 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x11 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x11 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint64_t x50 = (x49 >> 0x19);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x36 + (0x11 * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x19);
+ { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x19);
+ { uint32_t x60 = (x58 & 0x1ffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_7limbs/femulDisplay.log b/src/Specific/solinas32_2e174m17_7limbs/femulDisplay.log
new file mode 100644
index 000000000..49ea49d71
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x11 * (0x2 * ((uint64_t)x14 * x26))));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x26)) + ((0x2 * ((uint64_t)x15 * x27)) + (0x2 * ((uint64_t)x14 * x25))))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x11 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x11 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x11 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x44 + x30);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x29);
+ uint64_t x50 = (x49 >> 0x19);
+ uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ uint64_t x52 = (x50 + x28);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x36 + (0x11 * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x19);
+ uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x19);
+ uint32_t x60 = (x58 & 0x1ffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesquare.c b/src/Specific/solinas32_2e174m17_7limbs/fesquare.c
new file mode 100644
index 000000000..5a6c5fb42
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (0x2 * ((uint64_t)x11 * x11))));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x11)) + ((0x2 * ((uint64_t)x12 * x12)) + (0x2 * ((uint64_t)x11 * x10))))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x19);
+ { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint64_t x23 = (x22 >> 0x19);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint64_t x26 = (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint64_t x32 = (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x21 + (0x11 * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = (x43 & 0x1ffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..712620cd3
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (0x2 * ((uint64_t)x11 * x11))));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x11)) + ((0x2 * ((uint64_t)x12 * x12)) + (0x2 * ((uint64_t)x11 * x10))))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x19);
+ uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ uint64_t x22 = (x20 + x18);
+ uint64_t x23 = (x22 >> 0x19);
+ uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ uint64_t x25 = (x23 + x17);
+ uint64_t x26 = (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x16);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x15);
+ uint64_t x32 = (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x32 + x14);
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x13);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x21 + (0x11 * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x19);
+ uint32_t x45 = (x43 & 0x1ffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesub.c b/src/Specific/solinas32_2e174m17_7limbs/fesub.c
new file mode 100644
index 000000000..5ece7fe4e
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((Const 67108830 + x5) - x17);
+ out[1] = ((0x3fffffe + x7) - x19);
+ out[2] = ((0x3fffffe + x9) - x21);
+ out[3] = ((0x3fffffe + x11) - x23);
+ out[4] = ((0x3fffffe + x13) - x25);
+ out[5] = ((0x3fffffe + x15) - x27);
+ out[6] = ((0x1fffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..e143ca6a3
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x1fffffe + x14) - x26), ((0x3fffffe + x15) - x27), ((0x3fffffe + x13) - x25), ((0x3fffffe + x11) - x23), ((0x3fffffe + x9) - x21), ((0x3fffffe + x7) - x19), ((Const 67108830 + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_7limbs/freeze.c b/src/Specific/solinas32_2e174m17_7limbs/freeze.c
new file mode 100644
index 000000000..51d6da584
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554415);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1ffffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1ffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x1ffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xffffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & Const 33554415);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x1ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x1ffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x1ffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x1ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x1ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0xffffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..211f380a9
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554415);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1ffffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1ffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x1ffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xffffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & Const 33554415);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x1ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x1ffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x1ffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x1ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x1ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0xffffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_8limbs/feadd.c b/src/Specific/solinas32_2e174m17_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_8limbs/femul.c b/src/Specific/solinas32_2e174m17_8limbs/femul.c
new file mode 100644
index 000000000..81c112119
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x11 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x11 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x11 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x11 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x16);
+ { uint32_t x41 = ((uint32_t)x39 & 0x3fffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x16);
+ { uint32_t x44 = ((uint32_t)x42 & 0x3fffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint32_t x46 = (uint32_t) (x45 >> 0x16);
+ { uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x15);
+ { uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint32_t x52 = (uint32_t) (x51 >> 0x16);
+ { uint32_t x53 = ((uint32_t)x51 & 0x3fffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint32_t x55 = (uint32_t) (x54 >> 0x16);
+ { uint32_t x56 = ((uint32_t)x54 & 0x3fffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint32_t x58 = (uint32_t) (x57 >> 0x16);
+ { uint32_t x59 = ((uint32_t)x57 & 0x3fffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x15);
+ { uint32_t x62 = ((uint32_t)x60 & 0x1fffff);
+ { uint64_t x63 = (x41 + ((uint64_t)0x11 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x16);
+ { uint32_t x65 = ((uint32_t)x63 & 0x3fffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x16);
+ { uint32_t x68 = (x66 & 0x3fffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_8limbs/femulDisplay.log b/src/Specific/solinas32_2e174m17_8limbs/femulDisplay.log
new file mode 100644
index 000000000..ecb345f6b
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x11 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x11 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x11 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x11 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x16);
+ uint32_t x41 = ((uint32_t)x39 & 0x3fffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x16);
+ uint32_t x44 = ((uint32_t)x42 & 0x3fffff);
+ uint64_t x45 = (x43 + x37);
+ uint32_t x46 = (uint32_t) (x45 >> 0x16);
+ uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x15);
+ uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ uint64_t x51 = (x49 + x35);
+ uint32_t x52 = (uint32_t) (x51 >> 0x16);
+ uint32_t x53 = ((uint32_t)x51 & 0x3fffff);
+ uint64_t x54 = (x52 + x34);
+ uint32_t x55 = (uint32_t) (x54 >> 0x16);
+ uint32_t x56 = ((uint32_t)x54 & 0x3fffff);
+ uint64_t x57 = (x55 + x33);
+ uint32_t x58 = (uint32_t) (x57 >> 0x16);
+ uint32_t x59 = ((uint32_t)x57 & 0x3fffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x15);
+ uint32_t x62 = ((uint32_t)x60 & 0x1fffff);
+ uint64_t x63 = (x41 + ((uint64_t)0x11 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x16);
+ uint32_t x65 = ((uint32_t)x63 & 0x3fffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x16);
+ uint32_t x68 = (x66 & 0x3fffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesquare.c b/src/Specific/solinas32_2e174m17_8limbs/fesquare.c
new file mode 100644
index 000000000..dec43c8df
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x16);
+ { uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x16);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x15);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint64_t x46 = (x24 + ((uint64_t)0x11 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x16);
+ { uint32_t x51 = (x49 & 0x3fffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..846d739cd
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x16);
+ uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x20);
+ uint32_t x29 = (uint32_t) (x28 >> 0x16);
+ uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x15);
+ uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ uint64_t x34 = (x32 + x18);
+ uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x17);
+ uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ uint64_t x40 = (x38 + x16);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint64_t x46 = (x24 + ((uint64_t)0x11 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x16);
+ uint32_t x51 = (x49 & 0x3fffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesub.c b/src/Specific/solinas32_2e174m17_8limbs/fesub.c
new file mode 100644
index 000000000..335f5c0e4
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((0x7fffde + x5) - x19);
+ out[1] = ((0x7ffffe + x7) - x21);
+ out[2] = ((0x7ffffe + x9) - x23);
+ out[3] = ((0x3ffffe + x11) - x25);
+ out[4] = ((0x7ffffe + x13) - x27);
+ out[5] = ((0x7ffffe + x15) - x29);
+ out[6] = ((0x7ffffe + x17) - x31);
+ out[7] = ((0x3ffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..5c67ecf1c
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x3ffffe + x16) - x30), ((0x7ffffe + x17) - x31), ((0x7ffffe + x15) - x29), ((0x7ffffe + x13) - x27), ((0x3ffffe + x11) - x25), ((0x7ffffe + x9) - x23), ((0x7ffffe + x7) - x21), ((0x7fffde + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17_8limbs/freeze.c b/src/Specific/solinas32_2e174m17_8limbs/freeze.c
new file mode 100644
index 000000000..8ab82d97b
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffef);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x3fffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x3fffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x3fffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1fffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & 0x3fffef);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0x3fffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x3fffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0x1fffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x3fffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x3fffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x3fffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x1fffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..1f510ea1d
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffef);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x3fffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x3fffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x3fffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1fffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & 0x3fffef);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0x3fffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x3fffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0x1fffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x3fffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x3fffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x3fffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x1fffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_7limbs/feadd.c b/src/Specific/solinas32_2e174m3_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_7limbs/femul.c b/src/Specific/solinas32_2e174m3_7limbs/femul.c
new file mode 100644
index 000000000..f5e709aff
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x3 * (0x2 * ((uint64_t)x14 * x26))));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x26)) + ((0x2 * ((uint64_t)x15 * x27)) + (0x2 * ((uint64_t)x14 * x25))))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x3 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x3 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ { uint64_t x34 = (((uint64_t)x5 * x17) + (0x3 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x19);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x36 + (0x3 * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x19);
+ { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x19);
+ { uint32_t x60 = (x58 & 0x1ffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_7limbs/femulDisplay.log b/src/Specific/solinas32_2e174m3_7limbs/femulDisplay.log
new file mode 100644
index 000000000..4e8f9ea75
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x3 * (0x2 * ((uint64_t)x14 * x26))));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x26)) + (0x2 * ((uint64_t)x14 * x27)))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x26)) + ((0x2 * ((uint64_t)x15 * x27)) + (0x2 * ((uint64_t)x14 * x25))))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) + (0x3 * ((0x2 * ((uint64_t)x11 * x26)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + (0x2 * ((uint64_t)x14 * x23)))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0x3 * ((0x2 * ((uint64_t)x9 * x26)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + (0x2 * ((uint64_t)x14 * x21))))))));
+ uint64_t x34 = (((uint64_t)x5 * x17) + (0x3 * ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x44 + x30);
+ uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x29);
+ uint32_t x50 = (uint32_t) (x49 >> 0x19);
+ uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ uint64_t x52 = (x50 + x28);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x36 + (0x3 * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x19);
+ uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x19);
+ uint32_t x60 = (x58 & 0x1ffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesquare.c b/src/Specific/solinas32_2e174m3_7limbs/fesquare.c
new file mode 100644
index 000000000..e3a6632a8
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (0x2 * ((uint64_t)x11 * x11))));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x11)) + ((0x2 * ((uint64_t)x12 * x12)) + (0x2 * ((uint64_t)x11 * x10))))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ { uint64_t x19 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x19);
+ { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint64_t x23 = (x22 >> 0x19);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint64_t x26 = (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x21 + (0x3 * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = (x43 & 0x1ffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..f834ce2df
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (0x2 * ((uint64_t)x11 * x11))));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x11)) + (0x2 * ((uint64_t)x11 * x12)))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x11)) + ((0x2 * ((uint64_t)x12 * x12)) + (0x2 * ((uint64_t)x11 * x10))))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x11)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (0x2 * ((uint64_t)x11 * x8)))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x11)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + (0x2 * ((uint64_t)x11 * x6))))))));
+ uint64_t x19 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x19);
+ uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ uint64_t x22 = (x20 + x18);
+ uint64_t x23 = (x22 >> 0x19);
+ uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ uint64_t x25 = (x23 + x17);
+ uint64_t x26 = (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x16);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x15);
+ uint32_t x32 = (uint32_t) (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x32 + x14);
+ uint32_t x35 = (uint32_t) (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x13);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x21 + (0x3 * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x19);
+ uint32_t x45 = (x43 & 0x1ffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesub.c b/src/Specific/solinas32_2e174m3_7limbs/fesub.c
new file mode 100644
index 000000000..1c7d5e51b
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0x3fffffa + x5) - x17);
+ out[1] = ((0x3fffffe + x7) - x19);
+ out[2] = ((0x3fffffe + x9) - x21);
+ out[3] = ((0x3fffffe + x11) - x23);
+ out[4] = ((0x3fffffe + x13) - x25);
+ out[5] = ((0x3fffffe + x15) - x27);
+ out[6] = ((0x1fffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..f26e548e4
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x1fffffe + x14) - x26), ((0x3fffffe + x15) - x27), ((0x3fffffe + x13) - x25), ((0x3fffffe + x11) - x23), ((0x3fffffe + x9) - x21), ((0x3fffffe + x7) - x19), ((0x3fffffa + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_7limbs/freeze.c b/src/Specific/solinas32_2e174m3_7limbs/freeze.c
new file mode 100644
index 000000000..374fe1cbe
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffd);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1ffffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1ffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x1ffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xffffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0x1fffffd);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x1ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x1ffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x1ffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x1ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x1ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0xffffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..aa6dba0f3
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffd);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x1ffffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x1ffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x1ffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x1ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xffffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0x1fffffd);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x1ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x1ffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x1ffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x1ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x1ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0xffffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_8limbs/feadd.c b/src/Specific/solinas32_2e174m3_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_8limbs/femul.c b/src/Specific/solinas32_2e174m3_8limbs/femul.c
new file mode 100644
index 000000000..21705fce9
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x3 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x3 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x3 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x3 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint32_t x40 = (uint32_t) (x39 >> 0x16);
+ { uint32_t x41 = ((uint32_t)x39 & 0x3fffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint32_t x43 = (uint32_t) (x42 >> 0x16);
+ { uint32_t x44 = ((uint32_t)x42 & 0x3fffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint32_t x46 = (uint32_t) (x45 >> 0x16);
+ { uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint32_t x49 = (uint32_t) (x48 >> 0x15);
+ { uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint32_t x52 = (uint32_t) (x51 >> 0x16);
+ { uint32_t x53 = ((uint32_t)x51 & 0x3fffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint32_t x55 = (uint32_t) (x54 >> 0x16);
+ { uint32_t x56 = ((uint32_t)x54 & 0x3fffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint32_t x58 = (uint32_t) (x57 >> 0x16);
+ { uint32_t x59 = ((uint32_t)x57 & 0x3fffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x15);
+ { uint32_t x62 = ((uint32_t)x60 & 0x1fffff);
+ { uint32_t x63 = (x41 + (0x3 * x61));
+ { uint32_t x64 = (x63 >> 0x16);
+ { uint32_t x65 = (x63 & 0x3fffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x16);
+ { uint32_t x68 = (x66 & 0x3fffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_8limbs/femulDisplay.log b/src/Specific/solinas32_2e174m3_8limbs/femulDisplay.log
new file mode 100644
index 000000000..d88723ec8
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x3 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x3 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x3 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x3 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint32_t x40 = (uint32_t) (x39 >> 0x16);
+ uint32_t x41 = ((uint32_t)x39 & 0x3fffff);
+ uint64_t x42 = (x40 + x38);
+ uint32_t x43 = (uint32_t) (x42 >> 0x16);
+ uint32_t x44 = ((uint32_t)x42 & 0x3fffff);
+ uint64_t x45 = (x43 + x37);
+ uint32_t x46 = (uint32_t) (x45 >> 0x16);
+ uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
+ uint64_t x48 = (x46 + x36);
+ uint32_t x49 = (uint32_t) (x48 >> 0x15);
+ uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
+ uint64_t x51 = (x49 + x35);
+ uint32_t x52 = (uint32_t) (x51 >> 0x16);
+ uint32_t x53 = ((uint32_t)x51 & 0x3fffff);
+ uint64_t x54 = (x52 + x34);
+ uint32_t x55 = (uint32_t) (x54 >> 0x16);
+ uint32_t x56 = ((uint32_t)x54 & 0x3fffff);
+ uint64_t x57 = (x55 + x33);
+ uint32_t x58 = (uint32_t) (x57 >> 0x16);
+ uint32_t x59 = ((uint32_t)x57 & 0x3fffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x15);
+ uint32_t x62 = ((uint32_t)x60 & 0x1fffff);
+ uint32_t x63 = (x41 + (0x3 * x61));
+ uint32_t x64 = (x63 >> 0x16);
+ uint32_t x65 = (x63 & 0x3fffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x16);
+ uint32_t x68 = (x66 & 0x3fffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesquare.c b/src/Specific/solinas32_2e174m3_8limbs/fesquare.c
new file mode 100644
index 000000000..5d58c6956
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint32_t x23 = (uint32_t) (x22 >> 0x16);
+ { uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x16);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x15);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint32_t x46 = (x24 + (0x3 * x44));
+ { uint32_t x47 = (x46 >> 0x16);
+ { uint32_t x48 = (x46 & 0x3fffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x16);
+ { uint32_t x51 = (x49 & 0x3fffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..867d7fb89
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint32_t x23 = (uint32_t) (x22 >> 0x16);
+ uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
+ uint64_t x25 = (x23 + x21);
+ uint32_t x26 = (uint32_t) (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x20);
+ uint32_t x29 = (uint32_t) (x28 >> 0x16);
+ uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ uint64_t x31 = (x29 + x19);
+ uint32_t x32 = (uint32_t) (x31 >> 0x15);
+ uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ uint64_t x34 = (x32 + x18);
+ uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x17);
+ uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ uint64_t x40 = (x38 + x16);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint32_t x46 = (x24 + (0x3 * x44));
+ uint32_t x47 = (x46 >> 0x16);
+ uint32_t x48 = (x46 & 0x3fffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x16);
+ uint32_t x51 = (x49 & 0x3fffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesub.c b/src/Specific/solinas32_2e174m3_8limbs/fesub.c
new file mode 100644
index 000000000..eb153a8c2
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((Const 8388602 + x5) - x19);
+ out[1] = ((0x7ffffe + x7) - x21);
+ out[2] = ((0x7ffffe + x9) - x23);
+ out[3] = ((0x3ffffe + x11) - x25);
+ out[4] = ((0x7ffffe + x13) - x27);
+ out[5] = ((0x7ffffe + x15) - x29);
+ out[6] = ((0x7ffffe + x17) - x31);
+ out[7] = ((0x3ffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..441786031
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x3ffffe + x16) - x30), ((0x7ffffe + x17) - x31), ((0x7ffffe + x15) - x29), ((0x7ffffe + x13) - x27), ((0x3ffffe + x11) - x25), ((0x7ffffe + x9) - x23), ((0x7ffffe + x7) - x21), ((Const 8388602 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3_8limbs/freeze.c b/src/Specific/solinas32_2e174m3_8limbs/freeze.c
new file mode 100644
index 000000000..7d66409e1
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194301);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x3fffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x3fffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x3fffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1fffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & Const 4194301);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0x3fffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x3fffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0x1fffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x3fffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x3fffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x3fffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x1fffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..bd2cc1318
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194301);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x3fffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x3fffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x3fffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1fffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & Const 4194301);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0x3fffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x3fffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0x1fffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x3fffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x3fffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x3fffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x1fffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_8limbs/feadd.c b/src/Specific/solinas32_2e189m25_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_8limbs/femul.c b/src/Specific/solinas32_2e189m25_8limbs/femul.c
new file mode 100644
index 000000000..3e1955645
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x19 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x19 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x19 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x19 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x19 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x19 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x18);
+ { uint32_t x41 = ((uint32_t)x39 & 0xffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x18);
+ { uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x17);
+ { uint32_t x47 = ((uint32_t)x45 & 0x7fffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x18);
+ { uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x18);
+ { uint32_t x53 = ((uint32_t)x51 & 0xffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x17);
+ { uint32_t x56 = ((uint32_t)x54 & 0x7fffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint32_t x58 = (uint32_t) (x57 >> 0x18);
+ { uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x17);
+ { uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ { uint64_t x63 = (x41 + ((uint64_t)0x19 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x18);
+ { uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x18);
+ { uint32_t x68 = (x66 & 0xffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_8limbs/femulDisplay.log b/src/Specific/solinas32_2e189m25_8limbs/femulDisplay.log
new file mode 100644
index 000000000..a60f309c1
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x19 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x19 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x19 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x19 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x19 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x19 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x18);
+ uint32_t x41 = ((uint32_t)x39 & 0xffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x18);
+ uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x17);
+ uint32_t x47 = ((uint32_t)x45 & 0x7fffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x18);
+ uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x18);
+ uint32_t x53 = ((uint32_t)x51 & 0xffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x17);
+ uint32_t x56 = ((uint32_t)x54 & 0x7fffff);
+ uint64_t x57 = (x55 + x33);
+ uint32_t x58 = (uint32_t) (x57 >> 0x18);
+ uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x17);
+ uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ uint64_t x63 = (x41 + ((uint64_t)0x19 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x18);
+ uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x18);
+ uint32_t x68 = (x66 & 0xffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesquare.c b/src/Specific/solinas32_2e189m25_8limbs/fesquare.c
new file mode 100644
index 000000000..180a8bad8
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x18);
+ { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x18);
+ { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x17);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x24 + ((uint64_t)0x19 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = (x49 & 0xffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..62194cb45
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x18);
+ uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x18);
+ uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x17);
+ uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x16);
+ uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x24 + ((uint64_t)0x19 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x18);
+ uint32_t x51 = (x49 & 0xffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesub.c b/src/Specific/solinas32_2e189m25_8limbs/fesub.c
new file mode 100644
index 000000000..aa1a6a810
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((0x1ffffce + x5) - x19);
+ out[1] = ((0x1fffffe + x7) - x21);
+ out[2] = ((0xfffffe + x9) - x23);
+ out[3] = ((0x1fffffe + x11) - x25);
+ out[4] = ((0x1fffffe + x13) - x27);
+ out[5] = ((0xfffffe + x15) - x29);
+ out[6] = ((0x1fffffe + x17) - x31);
+ out[7] = ((0xfffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..d9ce29935
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0xfffffe + x16) - x30), ((0x1fffffe + x17) - x31), ((0xfffffe + x15) - x29), ((0x1fffffe + x13) - x27), ((0x1fffffe + x11) - x25), ((0xfffffe + x9) - x23), ((0x1fffffe + x7) - x21), ((0x1ffffce + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_8limbs/freeze.c b/src/Specific/solinas32_2e189m25_8limbs/freeze.c
new file mode 100644
index 000000000..14bd28b21
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe7);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x7fffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x7fffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & 0xffffe7);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0xffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x7fffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0xffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0xffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x7fffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0xffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x7fffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..373c465f1
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe7);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x7fffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x7fffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & 0xffffe7);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0xffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x7fffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0xffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0xffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x7fffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0xffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x7fffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_8limbs/feadd.c b/src/Specific/solinas32_2e190m11_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_8limbs/femul.c b/src/Specific/solinas32_2e190m11_8limbs/femul.c
new file mode 100644
index 000000000..cc7761576
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0xb * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0xb * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0xb * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0xb * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0xb * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0xb * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0xb * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x18);
+ { uint32_t x41 = ((uint32_t)x39 & 0xffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x18);
+ { uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x18);
+ { uint32_t x47 = ((uint32_t)x45 & 0xffffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x17);
+ { uint32_t x50 = ((uint32_t)x48 & 0x7fffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x18);
+ { uint32_t x53 = ((uint32_t)x51 & 0xffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x18);
+ { uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint32_t x58 = (uint32_t) (x57 >> 0x18);
+ { uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x17);
+ { uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ { uint64_t x63 = (x41 + ((uint64_t)0xb * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x18);
+ { uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x18);
+ { uint32_t x68 = (x66 & 0xffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_8limbs/femulDisplay.log b/src/Specific/solinas32_2e190m11_8limbs/femulDisplay.log
new file mode 100644
index 000000000..d091d88bf
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0xb * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0xb * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0xb * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0xb * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0xb * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0xb * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0xb * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x18);
+ uint32_t x41 = ((uint32_t)x39 & 0xffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x18);
+ uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x18);
+ uint32_t x47 = ((uint32_t)x45 & 0xffffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x17);
+ uint32_t x50 = ((uint32_t)x48 & 0x7fffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x18);
+ uint32_t x53 = ((uint32_t)x51 & 0xffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x18);
+ uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ uint64_t x57 = (x55 + x33);
+ uint32_t x58 = (uint32_t) (x57 >> 0x18);
+ uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x17);
+ uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ uint64_t x63 = (x41 + ((uint64_t)0xb * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x18);
+ uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x18);
+ uint32_t x68 = (x66 & 0xffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesquare.c b/src/Specific/solinas32_2e190m11_8limbs/fesquare.c
new file mode 100644
index 000000000..d2306fd0c
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xb * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xb * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xb * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xb * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xb * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xb * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0xb * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x18);
+ { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x18);
+ { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x24 + ((uint64_t)0xb * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = (x49 & 0xffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..1dfa748d3
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xb * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xb * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xb * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xb * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xb * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xb * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0xb * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x18);
+ uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x18);
+ uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x16);
+ uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x24 + ((uint64_t)0xb * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x18);
+ uint32_t x51 = (x49 & 0xffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesub.c b/src/Specific/solinas32_2e190m11_8limbs/fesub.c
new file mode 100644
index 000000000..e39024217
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((Const 33554410 + x5) - x19);
+ out[1] = ((0x1fffffe + x7) - x21);
+ out[2] = ((0x1fffffe + x9) - x23);
+ out[3] = ((0xfffffe + x11) - x25);
+ out[4] = ((0x1fffffe + x13) - x27);
+ out[5] = ((0x1fffffe + x15) - x29);
+ out[6] = ((0x1fffffe + x17) - x31);
+ out[7] = ((0xfffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..05e21d4bf
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0xfffffe + x16) - x30), ((0x1fffffe + x17) - x31), ((0x1fffffe + x15) - x29), ((0x1fffffe + x13) - x27), ((0xfffffe + x11) - x25), ((0x1fffffe + x9) - x23), ((0x1fffffe + x7) - x21), ((Const 33554410 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_8limbs/freeze.c b/src/Specific/solinas32_2e190m11_8limbs/freeze.c
new file mode 100644
index 000000000..1458b40ee
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777205);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x7fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & Const 16777205);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0xffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0xffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0x7fffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0xffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0xffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0xffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x7fffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..a8cb9c42e
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777205);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x7fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & Const 16777205);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0xffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0xffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0x7fffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0xffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0xffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0xffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x7fffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_8limbs/feadd.c b/src/Specific/solinas32_2e191m19_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_8limbs/femul.c b/src/Specific/solinas32_2e191m19_8limbs/femul.c
new file mode 100644
index 000000000..0d573e836
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x13 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x13 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x13 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x13 * ((0x2 * ((uint64_t)x11 * x30)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x13 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x13 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x18);
+ { uint32_t x41 = ((uint32_t)x39 & 0xffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x18);
+ { uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x18);
+ { uint32_t x47 = ((uint32_t)x45 & 0xffffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x18);
+ { uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x18);
+ { uint32_t x53 = ((uint32_t)x51 & 0xffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x18);
+ { uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint32_t x58 = (uint32_t) (x57 >> 0x18);
+ { uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x17);
+ { uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ { uint64_t x63 = (x41 + ((uint64_t)0x13 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x18);
+ { uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x18);
+ { uint32_t x68 = (x66 & 0xffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_8limbs/femulDisplay.log b/src/Specific/solinas32_2e191m19_8limbs/femulDisplay.log
new file mode 100644
index 000000000..47a66e92a
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x13 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x13 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x13 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x13 * ((0x2 * ((uint64_t)x11 * x30)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x13 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x13 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x18);
+ uint32_t x41 = ((uint32_t)x39 & 0xffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x18);
+ uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x18);
+ uint32_t x47 = ((uint32_t)x45 & 0xffffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x18);
+ uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x18);
+ uint32_t x53 = ((uint32_t)x51 & 0xffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x18);
+ uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ uint64_t x57 = (x55 + x33);
+ uint32_t x58 = (uint32_t) (x57 >> 0x18);
+ uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x17);
+ uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ uint64_t x63 = (x41 + ((uint64_t)0x13 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x18);
+ uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x18);
+ uint32_t x68 = (x66 & 0xffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesquare.c b/src/Specific/solinas32_2e191m19_8limbs/fesquare.c
new file mode 100644
index 000000000..e801601b2
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x13)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x18);
+ { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x18);
+ { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x24 + ((uint64_t)0x13 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = (x49 & 0xffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..380a3010e
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x13)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x18);
+ uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x18);
+ uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x16);
+ uint32_t x41 = (uint32_t) (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x24 + ((uint64_t)0x13 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x18);
+ uint32_t x51 = (x49 & 0xffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesub.c b/src/Specific/solinas32_2e191m19_8limbs/fesub.c
new file mode 100644
index 000000000..7d7eebbb9
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((Const 33554394 + x5) - x19);
+ out[1] = ((0x1fffffe + x7) - x21);
+ out[2] = ((0x1fffffe + x9) - x23);
+ out[3] = ((0x1fffffe + x11) - x25);
+ out[4] = ((0x1fffffe + x13) - x27);
+ out[5] = ((0x1fffffe + x15) - x29);
+ out[6] = ((0x1fffffe + x17) - x31);
+ out[7] = ((0xfffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..808561a1f
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0xfffffe + x16) - x30), ((0x1fffffe + x17) - x31), ((0x1fffffe + x15) - x29), ((0x1fffffe + x13) - x27), ((0x1fffffe + x11) - x25), ((0x1fffffe + x9) - x23), ((0x1fffffe + x7) - x21), ((Const 33554394 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_8limbs/freeze.c b/src/Specific/solinas32_2e191m19_8limbs/freeze.c
new file mode 100644
index 000000000..f736b8299
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777197);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & Const 16777197);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0xffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0xffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0xffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0xffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0xffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0xffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x7fffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..0832300ea
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777197);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & Const 16777197);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0xffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0xffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0xffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0xffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0xffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0xffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x7fffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_9limbs/feadd.c b/src/Specific/solinas32_2e191m19_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_9limbs/femul.c b/src/Specific/solinas32_2e191m19_9limbs/femul.c
new file mode 100644
index 000000000..ee224ceb6
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x13 * ((uint64_t)x18 * x34)));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x13 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x13 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((uint64_t)x13 * x21))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x34)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + (0x2 * ((uint64_t)x18 * x31)))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x13 * (((uint64_t)x13 * x34) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((uint64_t)x18 * x29)))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x13 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x13 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x13 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x16);
+ { uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x15);
+ { uint32_t x49 = ((uint32_t)x47 & 0x1fffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x15);
+ { uint32_t x52 = ((uint32_t)x50 & 0x1fffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint64_t x54 = (x53 >> 0x15);
+ { uint32_t x55 = ((uint32_t)x53 & 0x1fffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint32_t x57 = (uint32_t) (x56 >> 0x16);
+ { uint32_t x58 = ((uint32_t)x56 & 0x3fffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint32_t x60 = (uint32_t) (x59 >> 0x15);
+ { uint32_t x61 = ((uint32_t)x59 & 0x1fffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint32_t x63 = (uint32_t) (x62 >> 0x15);
+ { uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x15);
+ { uint32_t x67 = ((uint32_t)x65 & 0x1fffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint32_t x69 = (uint32_t) (x68 >> 0x15);
+ { uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
+ { uint64_t x71 = (x46 + ((uint64_t)0x13 * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ { uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x15);
+ { uint32_t x76 = (x74 & 0x1fffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_9limbs/femulDisplay.log b/src/Specific/solinas32_2e191m19_9limbs/femulDisplay.log
new file mode 100644
index 000000000..b6fd8eb84
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x13 * ((uint64_t)x18 * x34)));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x13 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x13 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((uint64_t)x13 * x21))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x34)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + (0x2 * ((uint64_t)x18 * x31)))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x13 * (((uint64_t)x13 * x34) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((uint64_t)x18 * x29)))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x13 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x13 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x13 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x16);
+ uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x15);
+ uint32_t x49 = ((uint32_t)x47 & 0x1fffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x15);
+ uint32_t x52 = ((uint32_t)x50 & 0x1fffff);
+ uint64_t x53 = (x51 + x41);
+ uint64_t x54 = (x53 >> 0x15);
+ uint32_t x55 = ((uint32_t)x53 & 0x1fffff);
+ uint64_t x56 = (x54 + x40);
+ uint32_t x57 = (uint32_t) (x56 >> 0x16);
+ uint32_t x58 = ((uint32_t)x56 & 0x3fffff);
+ uint64_t x59 = (x57 + x39);
+ uint32_t x60 = (uint32_t) (x59 >> 0x15);
+ uint32_t x61 = ((uint32_t)x59 & 0x1fffff);
+ uint64_t x62 = (x60 + x38);
+ uint32_t x63 = (uint32_t) (x62 >> 0x15);
+ uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
+ uint64_t x65 = (x63 + x37);
+ uint32_t x66 = (uint32_t) (x65 >> 0x15);
+ uint32_t x67 = ((uint32_t)x65 & 0x1fffff);
+ uint64_t x68 = (x66 + x36);
+ uint32_t x69 = (uint32_t) (x68 >> 0x15);
+ uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
+ uint64_t x71 = (x46 + ((uint64_t)0x13 * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x15);
+ uint32_t x76 = (x74 & 0x1fffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesquare.c b/src/Specific/solinas32_2e191m19_9limbs/fesquare.c
new file mode 100644
index 000000000..ac2392779
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((uint64_t)x15 * x15)));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x15)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (0x2 * ((uint64_t)x15 * x12)))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x15) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((uint64_t)x15 * x10)))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x15);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x15);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint64_t x35 = (x34 >> 0x15);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x15);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x15);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ { uint64_t x52 = (x27 + ((uint64_t)0x13 * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x15);
+ { uint32_t x57 = (x55 & 0x1fffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..94974bf04
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((uint64_t)x15 * x15)));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x15)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (0x2 * ((uint64_t)x15 * x12)))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x15) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((uint64_t)x15 * x10)))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x15);
+ uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x15);
+ uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ uint64_t x34 = (x32 + x22);
+ uint64_t x35 = (x34 >> 0x15);
+ uint32_t x36 = ((uint32_t)x34 & 0x1fffff);
+ uint64_t x37 = (x35 + x21);
+ uint32_t x38 = (uint32_t) (x37 >> 0x16);
+ uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
+ uint64_t x40 = (x38 + x20);
+ uint32_t x41 = (uint32_t) (x40 >> 0x15);
+ uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
+ uint64_t x43 = (x41 + x19);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint64_t x46 = (x44 + x18);
+ uint32_t x47 = (uint32_t) (x46 >> 0x15);
+ uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
+ uint64_t x49 = (x47 + x17);
+ uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ uint64_t x52 = (x27 + ((uint64_t)0x13 * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x15);
+ uint32_t x57 = (x55 & 0x1fffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesub.c b/src/Specific/solinas32_2e191m19_9limbs/fesub.c
new file mode 100644
index 000000000..387af353e
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((0x7fffda + x5) - x21);
+ out[1] = ((0x3ffffe + x7) - x23);
+ out[2] = ((0x3ffffe + x9) - x25);
+ out[3] = ((0x3ffffe + x11) - x27);
+ out[4] = ((0x7ffffe + x13) - x29);
+ out[5] = ((0x3ffffe + x15) - x31);
+ out[6] = ((0x3ffffe + x17) - x33);
+ out[7] = ((0x3ffffe + x19) - x35);
+ out[8] = ((0x3ffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..633c454ee
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x3ffffe + x18) - x34), ((0x3ffffe + x19) - x35), ((0x3ffffe + x17) - x33), ((0x3ffffe + x15) - x31), ((0x7ffffe + x13) - x29), ((0x3ffffe + x11) - x27), ((0x3ffffe + x9) - x25), ((0x3ffffe + x7) - x23), ((0x7fffda + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19_9limbs/freeze.c b/src/Specific/solinas32_2e191m19_9limbs/freeze.c
new file mode 100644
index 000000000..0207bbb81
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffed);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x1fffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x1fffff);
+ { 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 x8, 0x1fffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x1fffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1fffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1fffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1fffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & 0x3fffed);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x1fffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x1fffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x1fffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x3fffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x1fffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x1fffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x1fffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x1fffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..699e96a4d
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffed);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x1fffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x1fffff);
+ 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 x8, 0x1fffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x1fffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1fffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1fffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1fffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & 0x3fffed);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x1fffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x1fffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x1fffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x3fffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x1fffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x1fffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x1fffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x1fffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33_9limbs/feadd.c b/src/Specific/solinas32_2e194m33_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33_9limbs/femul.c b/src/Specific/solinas32_2e194m33_9limbs/femul.c
new file mode 100644
index 000000000..d5c4e4106
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x21 * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x21 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x21 * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x21 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x21 * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x21 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x21 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x21 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x16);
+ { uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x16);
+ { uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x15);
+ { uint32_t x52 = ((uint32_t)x50 & 0x1fffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint64_t x54 = (x53 >> 0x16);
+ { uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint64_t x57 = (x56 >> 0x15);
+ { uint32_t x58 = ((uint32_t)x56 & 0x1fffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint32_t x60 = (uint32_t) (x59 >> 0x16);
+ { uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint32_t x63 = (uint32_t) (x62 >> 0x15);
+ { uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ { uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint32_t x69 = (uint32_t) (x68 >> 0x15);
+ { uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
+ { uint64_t x71 = (x46 + ((uint64_t)0x21 * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ { uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x16);
+ { uint32_t x76 = (x74 & 0x3fffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e194m33_9limbs/femulDisplay.log b/src/Specific/solinas32_2e194m33_9limbs/femulDisplay.log
new file mode 100644
index 000000000..d20398ca5
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x21 * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x21 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x21 * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x21 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x21 * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x21 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x21 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x21 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x16);
+ uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x16);
+ uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x15);
+ uint32_t x52 = ((uint32_t)x50 & 0x1fffff);
+ uint64_t x53 = (x51 + x41);
+ uint64_t x54 = (x53 >> 0x16);
+ uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
+ uint64_t x56 = (x54 + x40);
+ uint64_t x57 = (x56 >> 0x15);
+ uint32_t x58 = ((uint32_t)x56 & 0x1fffff);
+ uint64_t x59 = (x57 + x39);
+ uint32_t x60 = (uint32_t) (x59 >> 0x16);
+ uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
+ uint64_t x62 = (x60 + x38);
+ uint32_t x63 = (uint32_t) (x62 >> 0x15);
+ uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
+ uint64_t x65 = (x63 + x37);
+ uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ uint64_t x68 = (x66 + x36);
+ uint32_t x69 = (uint32_t) (x68 >> 0x15);
+ uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
+ uint64_t x71 = (x46 + ((uint64_t)0x21 * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x16);
+ uint32_t x76 = (x74 & 0x3fffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesquare.c b/src/Specific/solinas32_2e194m33_9limbs/fesquare.c
new file mode 100644
index 000000000..8f3537f2b
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x21 * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x21 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x21 * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x21 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x21 * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x21 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x21 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x21 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x16);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x15);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint64_t x35 = (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x15);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ { uint64_t x52 = (x27 + ((uint64_t)0x21 * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x16);
+ { uint32_t x57 = (x55 & 0x3fffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..854b31f24
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x21 * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x21 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x21 * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x21 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x21 * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x21 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x21 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x21 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x16);
+ uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x15);
+ uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
+ uint64_t x34 = (x32 + x22);
+ uint64_t x35 = (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x15);
+ uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ uint64_t x40 = (x38 + x20);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x19);
+ uint32_t x44 = (uint32_t) (x43 >> 0x15);
+ uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
+ uint64_t x46 = (x44 + x18);
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint64_t x49 = (x47 + x17);
+ uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ uint64_t x52 = (x27 + ((uint64_t)0x21 * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x16);
+ uint32_t x57 = (x55 & 0x3fffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesub.c b/src/Specific/solinas32_2e194m33_9limbs/fesub.c
new file mode 100644
index 000000000..06e01015e
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((Const 8388542 + x5) - x21);
+ out[1] = ((0x7ffffe + x7) - x23);
+ out[2] = ((0x3ffffe + x9) - x25);
+ out[3] = ((0x7ffffe + x11) - x27);
+ out[4] = ((0x3ffffe + x13) - x29);
+ out[5] = ((0x7ffffe + x15) - x31);
+ out[6] = ((0x3ffffe + x17) - x33);
+ out[7] = ((0x7ffffe + x19) - x35);
+ out[8] = ((0x3ffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..e7d67c1f2
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x3ffffe + x18) - x34), ((0x7ffffe + x19) - x35), ((0x3ffffe + x17) - x33), ((0x7ffffe + x15) - x31), ((0x3ffffe + x13) - x29), ((0x7ffffe + x11) - x27), ((0x3ffffe + x9) - x25), ((0x7ffffe + x7) - x23), ((Const 8388542 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33_9limbs/freeze.c b/src/Specific/solinas32_2e194m33_9limbs/freeze.c
new file mode 100644
index 000000000..7dacfa20f
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194271);
+ { 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 x4, 0x3fffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x1fffff);
+ { 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 x8, 0x3fffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1fffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1fffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1fffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & Const 4194271);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x3fffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x1fffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x3fffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x1fffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x3fffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x1fffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x3fffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x1fffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..e3015f39d
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194271);
+ 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 x4, 0x3fffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x1fffff);
+ 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 x8, 0x3fffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1fffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1fffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1fffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & Const 4194271);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x3fffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x1fffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x3fffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x1fffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x3fffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x1fffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x3fffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x1fffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_8limbs/feadd.c b/src/Specific/solinas32_2e196m15_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_8limbs/femul.c b/src/Specific/solinas32_2e196m15_8limbs/femul.c
new file mode 100644
index 000000000..39cd69e00
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0xf * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0xf * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0xf * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0xf * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0xf * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0xf * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0xf * ((0x2 * ((uint64_t)x7 * x30)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x19);
+ { uint32_t x41 = ((uint32_t)x39 & 0x1ffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x18);
+ { uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x19);
+ { uint32_t x47 = ((uint32_t)x45 & 0x1ffffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x18);
+ { uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x19);
+ { uint32_t x53 = ((uint32_t)x51 & 0x1ffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x18);
+ { uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint64_t x58 = (x57 >> 0x19);
+ { uint32_t x59 = ((uint32_t)x57 & 0x1ffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint32_t x61 = (uint32_t) (x60 >> 0x18);
+ { uint32_t x62 = ((uint32_t)x60 & 0xffffff);
+ { uint64_t x63 = (x41 + ((uint64_t)0xf * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x19);
+ { uint32_t x65 = ((uint32_t)x63 & 0x1ffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x18);
+ { uint32_t x68 = (x66 & 0xffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_8limbs/femulDisplay.log b/src/Specific/solinas32_2e196m15_8limbs/femulDisplay.log
new file mode 100644
index 000000000..eeb257755
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0xf * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0xf * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0xf * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0xf * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0xf * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0xf * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0xf * ((0x2 * ((uint64_t)x7 * x30)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x19);
+ uint32_t x41 = ((uint32_t)x39 & 0x1ffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x18);
+ uint32_t x44 = ((uint32_t)x42 & 0xffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x19);
+ uint32_t x47 = ((uint32_t)x45 & 0x1ffffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x18);
+ uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x19);
+ uint32_t x53 = ((uint32_t)x51 & 0x1ffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x18);
+ uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ uint64_t x57 = (x55 + x33);
+ uint64_t x58 = (x57 >> 0x19);
+ uint32_t x59 = ((uint32_t)x57 & 0x1ffffff);
+ uint64_t x60 = (x58 + x32);
+ uint32_t x61 = (uint32_t) (x60 >> 0x18);
+ uint32_t x62 = ((uint32_t)x60 & 0xffffff);
+ uint64_t x63 = (x41 + ((uint64_t)0xf * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x19);
+ uint32_t x65 = ((uint32_t)x63 & 0x1ffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x18);
+ uint32_t x68 = (x66 & 0xffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesquare.c b/src/Specific/solinas32_2e196m15_8limbs/fesquare.c
new file mode 100644
index 000000000..ed7de1d16
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x13)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x19);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x18);
+ { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x24 + ((uint64_t)0xf * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = (x49 & 0xffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..f043e3458
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x13)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x19);
+ uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x18);
+ uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x16);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x15);
+ uint32_t x44 = (uint32_t) (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x24 + ((uint64_t)0xf * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x18);
+ uint32_t x51 = (x49 & 0xffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesub.c b/src/Specific/solinas32_2e196m15_8limbs/fesub.c
new file mode 100644
index 000000000..013addd3a
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((Const 67108834 + x5) - x19);
+ out[1] = ((0x1fffffe + x7) - x21);
+ out[2] = ((0x3fffffe + x9) - x23);
+ out[3] = ((0x1fffffe + x11) - x25);
+ out[4] = ((0x3fffffe + x13) - x27);
+ out[5] = ((0x1fffffe + x15) - x29);
+ out[6] = ((0x3fffffe + x17) - x31);
+ out[7] = ((0x1fffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..7dac3d64f
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x1fffffe + x16) - x30), ((0x3fffffe + x17) - x31), ((0x1fffffe + x15) - x29), ((0x3fffffe + x13) - x27), ((0x1fffffe + x11) - x25), ((0x3fffffe + x9) - x23), ((0x1fffffe + x7) - x21), ((Const 67108834 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_8limbs/freeze.c b/src/Specific/solinas32_2e196m15_8limbs/freeze.c
new file mode 100644
index 000000000..624dadc27
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffff1);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ { 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 x6, 0x1ffffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & 0x1fffff1);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0xffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x1ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0xffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x1ffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0xffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x1ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0xffffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..1fb132f2f
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffff1);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
+ 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 x6, 0x1ffffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & 0x1fffff1);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0xffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x1ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0xffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x1ffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0xffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x1ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0xffffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_9limbs/feadd.c b/src/Specific/solinas32_2e196m15_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_9limbs/femul.c b/src/Specific/solinas32_2e196m15_9limbs/femul.c
new file mode 100644
index 000000000..581348c40
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0xf * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0xf * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0xf * ((0x2 * ((uint64_t)x17 * x34)) + ((0x2 * ((uint64_t)x19 * x35)) + (0x2 * ((uint64_t)x18 * x33))))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0xf * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0xf * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0xf * ((0x2 * ((uint64_t)x11 * x34)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + (0x2 * ((uint64_t)x18 * x27)))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0xf * ((0x2 * ((uint64_t)x9 * x34)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0xf * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x16);
+ { uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x16);
+ { uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x16);
+ { uint32_t x52 = ((uint32_t)x50 & 0x3fffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint32_t x54 = (uint32_t) (x53 >> 0x16);
+ { uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint64_t x57 = (x56 >> 0x15);
+ { uint32_t x58 = ((uint32_t)x56 & 0x1fffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint32_t x60 = (uint32_t) (x59 >> 0x16);
+ { uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint32_t x63 = (uint32_t) (x62 >> 0x16);
+ { uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ { uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint32_t x69 = (uint32_t) (x68 >> 0x15);
+ { uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
+ { uint64_t x71 = (x46 + ((uint64_t)0xf * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ { uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x16);
+ { uint32_t x76 = (x74 & 0x3fffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_9limbs/femulDisplay.log b/src/Specific/solinas32_2e196m15_9limbs/femulDisplay.log
new file mode 100644
index 000000000..85cb53c4b
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0xf * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0xf * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0xf * ((0x2 * ((uint64_t)x17 * x34)) + ((0x2 * ((uint64_t)x19 * x35)) + (0x2 * ((uint64_t)x18 * x33))))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0xf * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0xf * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0xf * ((0x2 * ((uint64_t)x11 * x34)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + (0x2 * ((uint64_t)x18 * x27)))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0xf * ((0x2 * ((uint64_t)x9 * x34)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0xf * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x16);
+ uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x16);
+ uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x16);
+ uint32_t x52 = ((uint32_t)x50 & 0x3fffff);
+ uint64_t x53 = (x51 + x41);
+ uint32_t x54 = (uint32_t) (x53 >> 0x16);
+ uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
+ uint64_t x56 = (x54 + x40);
+ uint64_t x57 = (x56 >> 0x15);
+ uint32_t x58 = ((uint32_t)x56 & 0x1fffff);
+ uint64_t x59 = (x57 + x39);
+ uint32_t x60 = (uint32_t) (x59 >> 0x16);
+ uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
+ uint64_t x62 = (x60 + x38);
+ uint32_t x63 = (uint32_t) (x62 >> 0x16);
+ uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
+ uint64_t x65 = (x63 + x37);
+ uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ uint64_t x68 = (x66 + x36);
+ uint32_t x69 = (uint32_t) (x68 >> 0x15);
+ uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
+ uint64_t x71 = (x46 + ((uint64_t)0xf * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x16);
+ uint32_t x76 = (x74 & 0x3fffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesquare.c b/src/Specific/solinas32_2e196m15_9limbs/fesquare.c
new file mode 100644
index 000000000..305b68c9e
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xf * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xf * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * ((0x2 * ((uint64_t)x14 * x15)) + ((0x2 * ((uint64_t)x16 * x16)) + (0x2 * ((uint64_t)x15 * x14))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xf * ((0x2 * ((uint64_t)x8 * x15)) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (0x2 * ((uint64_t)x15 * x8)))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * ((0x2 * ((uint64_t)x6 * x15)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x16);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x16);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x16);
+ { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x15);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x16);
+ { uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ { uint64_t x52 = (x27 + ((uint64_t)0xf * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x16);
+ { uint32_t x57 = (x55 & 0x3fffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..6cd41d7c2
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xf * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xf * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * ((0x2 * ((uint64_t)x14 * x15)) + ((0x2 * ((uint64_t)x16 * x16)) + (0x2 * ((uint64_t)x15 * x14))))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xf * ((0x2 * ((uint64_t)x8 * x15)) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (0x2 * ((uint64_t)x15 * x8)))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * ((0x2 * ((uint64_t)x6 * x15)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x16);
+ uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x16);
+ uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x16);
+ uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
+ uint64_t x34 = (x32 + x22);
+ uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x15);
+ uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
+ uint64_t x40 = (x38 + x20);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x19);
+ uint32_t x44 = (uint32_t) (x43 >> 0x16);
+ uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
+ uint64_t x46 = (x44 + x18);
+ uint32_t x47 = (uint32_t) (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint64_t x49 = (x47 + x17);
+ uint32_t x50 = (uint32_t) (x49 >> 0x15);
+ uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
+ uint64_t x52 = (x27 + ((uint64_t)0xf * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x16);
+ uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x16);
+ uint32_t x57 = (x55 & 0x3fffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesub.c b/src/Specific/solinas32_2e196m15_9limbs/fesub.c
new file mode 100644
index 000000000..a2822a647
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((Const 8388578 + x5) - x21);
+ out[1] = ((0x7ffffe + x7) - x23);
+ out[2] = ((0x7ffffe + x9) - x25);
+ out[3] = ((0x7ffffe + x11) - x27);
+ out[4] = ((0x3ffffe + x13) - x29);
+ out[5] = ((0x7ffffe + x15) - x31);
+ out[6] = ((0x7ffffe + x17) - x33);
+ out[7] = ((0x7ffffe + x19) - x35);
+ out[8] = ((0x3ffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..470b046c5
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x3ffffe + x18) - x34), ((0x7ffffe + x19) - x35), ((0x7ffffe + x17) - x33), ((0x7ffffe + x15) - x31), ((0x3ffffe + x13) - x29), ((0x7ffffe + x11) - x27), ((0x7ffffe + x9) - x25), ((0x7ffffe + x7) - x23), ((Const 8388578 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15_9limbs/freeze.c b/src/Specific/solinas32_2e196m15_9limbs/freeze.c
new file mode 100644
index 000000000..967ca2551
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194289);
+ { 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 x4, 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 x6, 0x3fffff);
+ { 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 x8, 0x3fffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1fffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1fffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & Const 4194289);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x3fffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x3fffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x3fffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x1fffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x3fffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x3fffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x3fffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x1fffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..ffc38f1c5
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194289);
+ 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 x4, 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 x6, 0x3fffff);
+ 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 x8, 0x3fffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1fffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1fffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & Const 4194289);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x3fffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x3fffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x3fffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x1fffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x3fffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x3fffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x3fffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x1fffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17_8limbs/feadd.c b/src/Specific/solinas32_2e198m17_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17_8limbs/femul.c b/src/Specific/solinas32_2e198m17_8limbs/femul.c
new file mode 100644
index 000000000..ac77b93d4
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x11 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x11 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x11 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x11 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x19);
+ { uint32_t x41 = ((uint32_t)x39 & 0x1ffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x19);
+ { uint32_t x44 = ((uint32_t)x42 & 0x1ffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x19);
+ { uint32_t x47 = ((uint32_t)x45 & 0x1ffffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x18);
+ { uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x19);
+ { uint32_t x53 = ((uint32_t)x51 & 0x1ffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x19);
+ { uint32_t x56 = ((uint32_t)x54 & 0x1ffffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint64_t x58 = (x57 >> 0x19);
+ { uint32_t x59 = ((uint32_t)x57 & 0x1ffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint64_t x61 = (x60 >> 0x18);
+ { uint32_t x62 = ((uint32_t)x60 & 0xffffff);
+ { uint64_t x63 = (x41 + (0x11 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x19);
+ { uint32_t x65 = ((uint32_t)x63 & 0x1ffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x19);
+ { uint32_t x68 = (x66 & 0x1ffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e198m17_8limbs/femulDisplay.log b/src/Specific/solinas32_2e198m17_8limbs/femulDisplay.log
new file mode 100644
index 000000000..b476342cc
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x11 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x11 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x11 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x11 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x19);
+ uint32_t x41 = ((uint32_t)x39 & 0x1ffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x19);
+ uint32_t x44 = ((uint32_t)x42 & 0x1ffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x19);
+ uint32_t x47 = ((uint32_t)x45 & 0x1ffffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x18);
+ uint32_t x50 = ((uint32_t)x48 & 0xffffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x19);
+ uint32_t x53 = ((uint32_t)x51 & 0x1ffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x19);
+ uint32_t x56 = ((uint32_t)x54 & 0x1ffffff);
+ uint64_t x57 = (x55 + x33);
+ uint64_t x58 = (x57 >> 0x19);
+ uint32_t x59 = ((uint32_t)x57 & 0x1ffffff);
+ uint64_t x60 = (x58 + x32);
+ uint64_t x61 = (x60 >> 0x18);
+ uint32_t x62 = ((uint32_t)x60 & 0xffffff);
+ uint64_t x63 = (x41 + (0x11 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x19);
+ uint32_t x65 = ((uint32_t)x63 & 0x1ffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x19);
+ uint32_t x68 = (x66 & 0x1ffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesquare.c b/src/Specific/solinas32_2e198m17_8limbs/fesquare.c
new file mode 100644
index 000000000..429016d6a
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x19);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint64_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x24 + (0x11 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x19);
+ { uint32_t x51 = (x49 & 0x1ffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..db6452242
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x19);
+ uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x16);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x15);
+ uint64_t x44 = (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x24 + (0x11 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x19);
+ uint32_t x51 = (x49 & 0x1ffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesub.c b/src/Specific/solinas32_2e198m17_8limbs/fesub.c
new file mode 100644
index 000000000..6dac1f3aa
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((Const 67108830 + x5) - x19);
+ out[1] = ((0x3fffffe + x7) - x21);
+ out[2] = ((0x3fffffe + x9) - x23);
+ out[3] = ((0x1fffffe + x11) - x25);
+ out[4] = ((0x3fffffe + x13) - x27);
+ out[5] = ((0x3fffffe + x15) - x29);
+ out[6] = ((0x3fffffe + x17) - x31);
+ out[7] = ((0x1fffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..b8d7c4d33
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x1fffffe + x16) - x30), ((0x3fffffe + x17) - x31), ((0x3fffffe + x15) - x29), ((0x3fffffe + x13) - x27), ((0x1fffffe + x11) - x25), ((0x3fffffe + x9) - x23), ((0x3fffffe + x7) - x21), ((Const 67108830 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17_8limbs/freeze.c b/src/Specific/solinas32_2e198m17_8limbs/freeze.c
new file mode 100644
index 000000000..299b41e39
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554415);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1ffffff);
+ { 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 x6, 0x1ffffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x1ffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & Const 33554415);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0x1ffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x1ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0xffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x1ffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x1ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x1ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0xffffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..f10baea3d
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554415);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1ffffff);
+ 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 x6, 0x1ffffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x1ffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & Const 33554415);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0x1ffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x1ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0xffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x1ffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x1ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x1ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0xffffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_8limbs/feadd.c b/src/Specific/solinas32_2e206m5_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_8limbs/femul.c b/src/Specific/solinas32_2e206m5_8limbs/femul.c
new file mode 100644
index 000000000..05e571707
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x5 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x5 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x5 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x5 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x5 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x5 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x1a);
+ { uint32_t x41 = ((uint32_t)x39 & 0x3ffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x1a);
+ { uint32_t x44 = ((uint32_t)x42 & 0x3ffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x1a);
+ { uint32_t x47 = ((uint32_t)x45 & 0x3ffffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x19);
+ { uint32_t x50 = ((uint32_t)x48 & 0x1ffffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x1a);
+ { uint32_t x53 = ((uint32_t)x51 & 0x3ffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x1a);
+ { uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint64_t x58 = (x57 >> 0x1a);
+ { uint32_t x59 = ((uint32_t)x57 & 0x3ffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint64_t x61 = (x60 >> 0x19);
+ { uint32_t x62 = ((uint32_t)x60 & 0x1ffffff);
+ { uint64_t x63 = (x41 + (0x5 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x1a);
+ { uint32_t x65 = ((uint32_t)x63 & 0x3ffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x1a);
+ { uint32_t x68 = (x66 & 0x3ffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_8limbs/femulDisplay.log b/src/Specific/solinas32_2e206m5_8limbs/femulDisplay.log
new file mode 100644
index 000000000..63e534599
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) + (0x5 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x5 * ((0x2 * ((uint64_t)x17 * x30)) + (0x2 * ((uint64_t)x16 * x31)))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x5 * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x5 * ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x5 * ((0x2 * ((uint64_t)x9 * x30)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x5 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x1a);
+ uint32_t x41 = ((uint32_t)x39 & 0x3ffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x1a);
+ uint32_t x44 = ((uint32_t)x42 & 0x3ffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x1a);
+ uint32_t x47 = ((uint32_t)x45 & 0x3ffffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x19);
+ uint32_t x50 = ((uint32_t)x48 & 0x1ffffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x1a);
+ uint32_t x53 = ((uint32_t)x51 & 0x3ffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x1a);
+ uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
+ uint64_t x57 = (x55 + x33);
+ uint64_t x58 = (x57 >> 0x1a);
+ uint32_t x59 = ((uint32_t)x57 & 0x3ffffff);
+ uint64_t x60 = (x58 + x32);
+ uint64_t x61 = (x60 >> 0x19);
+ uint32_t x62 = ((uint32_t)x60 & 0x1ffffff);
+ uint64_t x63 = (x41 + (0x5 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x1a);
+ uint32_t x65 = ((uint32_t)x63 & 0x3ffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x1a);
+ uint32_t x68 = (x66 & 0x3ffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesquare.c b/src/Specific/solinas32_2e206m5_8limbs/fesquare.c
new file mode 100644
index 000000000..0be1a7e70
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x5 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x1a);
+ { uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x1a);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x1a);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x1a);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x1a);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint64_t x41 = (x40 >> 0x1a);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x24 + (0x5 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x1a);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x1a);
+ { uint32_t x51 = (x49 & 0x3ffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..725782e55
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x5 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * ((0x2 * ((uint64_t)x14 * x13)) + (0x2 * ((uint64_t)x13 * x14)))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x13)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x1a);
+ uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x1a);
+ uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x1a);
+ uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x1a);
+ uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x1a);
+ uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ uint64_t x40 = (x38 + x16);
+ uint64_t x41 = (x40 >> 0x1a);
+ uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ uint64_t x43 = (x41 + x15);
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x24 + (0x5 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x1a);
+ uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x1a);
+ uint32_t x51 = (x49 & 0x3ffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesub.c b/src/Specific/solinas32_2e206m5_8limbs/fesub.c
new file mode 100644
index 000000000..c0c7ec7b8
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((0x7fffff6 + x5) - x19);
+ out[1] = ((0x7fffffe + x7) - x21);
+ out[2] = ((0x7fffffe + x9) - x23);
+ out[3] = ((0x3fffffe + x11) - x25);
+ out[4] = ((0x7fffffe + x13) - x27);
+ out[5] = ((0x7fffffe + x15) - x29);
+ out[6] = ((0x7fffffe + x17) - x31);
+ out[7] = ((0x3fffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..3dd042f02
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x3fffffe + x16) - x30), ((0x7fffffe + x17) - x31), ((0x7fffffe + x15) - x29), ((0x7fffffe + x13) - x27), ((0x3fffffe + x11) - x25), ((0x7fffffe + x9) - x23), ((0x7fffffe + x7) - x21), ((0x7fffff6 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_8limbs/freeze.c b/src/Specific/solinas32_2e206m5_8limbs/freeze.c
new file mode 100644
index 000000000..b595e6712
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffb);
+ { 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 x4, 0x3ffffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3ffffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1ffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x3ffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x3ffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1ffffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & 0x3fffffb);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0x3ffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x3ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0x1ffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x3ffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x3ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x3ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x1ffffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..83b10aa8a
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, 0x3fffffb);
+ 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 x4, 0x3ffffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3ffffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1ffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x3ffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x3ffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1ffffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & 0x3fffffb);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0x3ffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x3ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0x1ffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x3ffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x3ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x3ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x1ffffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_9limbs/feadd.c b/src/Specific/solinas32_2e206m5_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_9limbs/femul.c b/src/Specific/solinas32_2e206m5_9limbs/femul.c
new file mode 100644
index 000000000..ed4a4983c
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x5 * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x5 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x5 * ((0x2 * ((uint64_t)x17 * x34)) + ((0x2 * ((uint64_t)x19 * x35)) + (0x2 * ((uint64_t)x18 * x33))))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x34)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + (0x2 * ((uint64_t)x18 * x31)))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x5 * ((0x2 * ((uint64_t)x11 * x34)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + (0x2 * ((uint64_t)x18 * x27)))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x5 * ((0x2 * ((uint64_t)x9 * x34)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x5 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x17);
+ { uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x17);
+ { uint32_t x49 = ((uint32_t)x47 & 0x7fffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x17);
+ { uint32_t x52 = ((uint32_t)x50 & 0x7fffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint32_t x54 = (uint32_t) (x53 >> 0x17);
+ { uint32_t x55 = ((uint32_t)x53 & 0x7fffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint32_t x57 = (uint32_t) (x56 >> 0x17);
+ { uint32_t x58 = ((uint32_t)x56 & 0x7fffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint32_t x60 = (uint32_t) (x59 >> 0x17);
+ { uint32_t x61 = ((uint32_t)x59 & 0x7fffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint32_t x63 = (uint32_t) (x62 >> 0x17);
+ { uint32_t x64 = ((uint32_t)x62 & 0x7fffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x17);
+ { uint32_t x67 = ((uint32_t)x65 & 0x7fffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint32_t x69 = (uint32_t) (x68 >> 0x16);
+ { uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
+ { uint64_t x71 = (x46 + ((uint64_t)0x5 * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x17);
+ { uint32_t x73 = ((uint32_t)x71 & 0x7fffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x17);
+ { uint32_t x76 = (x74 & 0x7fffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_9limbs/femulDisplay.log b/src/Specific/solinas32_2e206m5_9limbs/femulDisplay.log
new file mode 100644
index 000000000..488601433
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x5 * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x5 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x5 * ((0x2 * ((uint64_t)x17 * x34)) + ((0x2 * ((uint64_t)x19 * x35)) + (0x2 * ((uint64_t)x18 * x33))))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x5 * ((0x2 * ((uint64_t)x15 * x34)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + (0x2 * ((uint64_t)x18 * x31)))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x5 * ((0x2 * ((uint64_t)x11 * x34)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + (0x2 * ((uint64_t)x18 * x27)))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x5 * ((0x2 * ((uint64_t)x9 * x34)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x5 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x17);
+ uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x17);
+ uint32_t x49 = ((uint32_t)x47 & 0x7fffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x17);
+ uint32_t x52 = ((uint32_t)x50 & 0x7fffff);
+ uint64_t x53 = (x51 + x41);
+ uint32_t x54 = (uint32_t) (x53 >> 0x17);
+ uint32_t x55 = ((uint32_t)x53 & 0x7fffff);
+ uint64_t x56 = (x54 + x40);
+ uint32_t x57 = (uint32_t) (x56 >> 0x17);
+ uint32_t x58 = ((uint32_t)x56 & 0x7fffff);
+ uint64_t x59 = (x57 + x39);
+ uint32_t x60 = (uint32_t) (x59 >> 0x17);
+ uint32_t x61 = ((uint32_t)x59 & 0x7fffff);
+ uint64_t x62 = (x60 + x38);
+ uint32_t x63 = (uint32_t) (x62 >> 0x17);
+ uint32_t x64 = ((uint32_t)x62 & 0x7fffff);
+ uint64_t x65 = (x63 + x37);
+ uint32_t x66 = (uint32_t) (x65 >> 0x17);
+ uint32_t x67 = ((uint32_t)x65 & 0x7fffff);
+ uint64_t x68 = (x66 + x36);
+ uint32_t x69 = (uint32_t) (x68 >> 0x16);
+ uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
+ uint64_t x71 = (x46 + ((uint64_t)0x5 * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x17);
+ uint32_t x73 = ((uint32_t)x71 & 0x7fffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x17);
+ uint32_t x76 = (x74 & 0x7fffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesquare.c b/src/Specific/solinas32_2e206m5_9limbs/fesquare.c
new file mode 100644
index 000000000..afd9dbb29
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x5 * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x5 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * ((0x2 * ((uint64_t)x14 * x15)) + ((0x2 * ((uint64_t)x16 * x16)) + (0x2 * ((uint64_t)x15 * x14))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x15)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (0x2 * ((uint64_t)x15 * x12)))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x15)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + (0x2 * ((uint64_t)x15 * x8)))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x15)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x17);
+ { uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x17);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x17);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x17);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x17);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x16);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
+ { uint64_t x52 = (x27 + ((uint64_t)0x5 * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x17);
+ { uint32_t x57 = (x55 & 0x7fffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..52d75ffb2
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x5 * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x5 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * ((0x2 * ((uint64_t)x14 * x15)) + ((0x2 * ((uint64_t)x16 * x16)) + (0x2 * ((uint64_t)x15 * x14))))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * ((0x2 * ((uint64_t)x12 * x15)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (0x2 * ((uint64_t)x15 * x12)))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * ((0x2 * ((uint64_t)x8 * x15)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + (0x2 * ((uint64_t)x15 * x8)))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x15)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x17);
+ uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x17);
+ uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x22);
+ uint32_t x35 = (uint32_t) (x34 >> 0x17);
+ uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ uint64_t x37 = (x35 + x21);
+ uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x20);
+ uint32_t x41 = (uint32_t) (x40 >> 0x17);
+ uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ uint64_t x43 = (x41 + x19);
+ uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x18);
+ uint32_t x47 = (uint32_t) (x46 >> 0x17);
+ uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ uint64_t x49 = (x47 + x17);
+ uint32_t x50 = (uint32_t) (x49 >> 0x16);
+ uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
+ uint64_t x52 = (x27 + ((uint64_t)0x5 * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x17);
+ uint32_t x57 = (x55 & 0x7fffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesub.c b/src/Specific/solinas32_2e206m5_9limbs/fesub.c
new file mode 100644
index 000000000..535d68f5c
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((Const 16777206 + x5) - x21);
+ out[1] = ((0xfffffe + x7) - x23);
+ out[2] = ((0xfffffe + x9) - x25);
+ out[3] = ((0xfffffe + x11) - x27);
+ out[4] = ((0xfffffe + x13) - x29);
+ out[5] = ((0xfffffe + x15) - x31);
+ out[6] = ((0xfffffe + x17) - x33);
+ out[7] = ((0xfffffe + x19) - x35);
+ out[8] = ((0x7ffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..4ce5320af
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x7ffffe + x18) - x34), ((0xfffffe + x19) - x35), ((0xfffffe + x17) - x33), ((0xfffffe + x15) - x31), ((0xfffffe + x13) - x29), ((0xfffffe + x11) - x27), ((0xfffffe + x9) - x25), ((0xfffffe + x7) - x23), ((Const 16777206 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5_9limbs/freeze.c b/src/Specific/solinas32_2e206m5_9limbs/freeze.c
new file mode 100644
index 000000000..a30bc2efa
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388603);
+ { 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 x4, 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 x6, 0x7fffff);
+ { 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 x8, 0x7fffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7fffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7fffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & Const 8388603);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x7fffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x7fffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x7fffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x7fffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x7fffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x7fffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x7fffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x3fffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..e4f66eefd
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, Const 8388603);
+ 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 x4, 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 x6, 0x7fffff);
+ 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 x8, 0x7fffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7fffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7fffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & Const 8388603);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x7fffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x7fffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x7fffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x7fffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x7fffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x7fffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x7fffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x3fffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29_9limbs/feadd.c b/src/Specific/solinas32_2e212m29_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29_9limbs/femul.c b/src/Specific/solinas32_2e212m29_9limbs/femul.c
new file mode 100644
index 000000000..1ec44d2fa
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x1d * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x1d * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x1d * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x1d * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x1d * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x1d * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x1d * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x1d * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x18);
+ { uint32_t x46 = ((uint32_t)x44 & 0xffffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x18);
+ { uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x17);
+ { uint32_t x52 = ((uint32_t)x50 & 0x7fffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint64_t x54 = (x53 >> 0x18);
+ { uint32_t x55 = ((uint32_t)x53 & 0xffffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint64_t x57 = (x56 >> 0x17);
+ { uint32_t x58 = ((uint32_t)x56 & 0x7fffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint64_t x60 = (x59 >> 0x18);
+ { uint32_t x61 = ((uint32_t)x59 & 0xffffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint64_t x63 = (x62 >> 0x17);
+ { uint32_t x64 = ((uint32_t)x62 & 0x7fffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint64_t x66 = (x65 >> 0x18);
+ { uint32_t x67 = ((uint32_t)x65 & 0xffffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint32_t x69 = (uint32_t) (x68 >> 0x17);
+ { uint32_t x70 = ((uint32_t)x68 & 0x7fffff);
+ { uint64_t x71 = (x46 + ((uint64_t)0x1d * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x18);
+ { uint32_t x73 = ((uint32_t)x71 & 0xffffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x18);
+ { uint32_t x76 = (x74 & 0xffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e212m29_9limbs/femulDisplay.log b/src/Specific/solinas32_2e212m29_9limbs/femulDisplay.log
new file mode 100644
index 000000000..e0951d3a5
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x1d * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x1d * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x1d * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x1d * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x1d * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x1d * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x1d * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x1d * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x18);
+ uint32_t x46 = ((uint32_t)x44 & 0xffffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x18);
+ uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x17);
+ uint32_t x52 = ((uint32_t)x50 & 0x7fffff);
+ uint64_t x53 = (x51 + x41);
+ uint64_t x54 = (x53 >> 0x18);
+ uint32_t x55 = ((uint32_t)x53 & 0xffffff);
+ uint64_t x56 = (x54 + x40);
+ uint64_t x57 = (x56 >> 0x17);
+ uint32_t x58 = ((uint32_t)x56 & 0x7fffff);
+ uint64_t x59 = (x57 + x39);
+ uint64_t x60 = (x59 >> 0x18);
+ uint32_t x61 = ((uint32_t)x59 & 0xffffff);
+ uint64_t x62 = (x60 + x38);
+ uint64_t x63 = (x62 >> 0x17);
+ uint32_t x64 = ((uint32_t)x62 & 0x7fffff);
+ uint64_t x65 = (x63 + x37);
+ uint64_t x66 = (x65 >> 0x18);
+ uint32_t x67 = ((uint32_t)x65 & 0xffffff);
+ uint64_t x68 = (x66 + x36);
+ uint32_t x69 = (uint32_t) (x68 >> 0x17);
+ uint32_t x70 = ((uint32_t)x68 & 0x7fffff);
+ uint64_t x71 = (x46 + ((uint64_t)0x1d * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x18);
+ uint32_t x73 = ((uint32_t)x71 & 0xffffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x18);
+ uint32_t x76 = (x74 & 0xffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesquare.c b/src/Specific/solinas32_2e212m29_9limbs/fesquare.c
new file mode 100644
index 000000000..f651debf8
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1d * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x1d * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x1d * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1d * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1d * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1d * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1d * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x1d * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x18);
+ { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint64_t x41 = (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint64_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x27 + ((uint64_t)0x1d * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = (x55 & 0xffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..f54042b88
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1d * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x1d * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x1d * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1d * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1d * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1d * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1d * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x1d * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x18);
+ uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x22);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x20);
+ uint64_t x41 = (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x19);
+ uint64_t x44 = (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x18);
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x17);
+ uint32_t x50 = (uint32_t) (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x27 + ((uint64_t)0x1d * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x18);
+ uint32_t x57 = (x55 & 0xffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesub.c b/src/Specific/solinas32_2e212m29_9limbs/fesub.c
new file mode 100644
index 000000000..ce5f43771
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((Const 33554374 + x5) - x21);
+ out[1] = ((0x1fffffe + x7) - x23);
+ out[2] = ((0xfffffe + x9) - x25);
+ out[3] = ((0x1fffffe + x11) - x27);
+ out[4] = ((0xfffffe + x13) - x29);
+ out[5] = ((0x1fffffe + x15) - x31);
+ out[6] = ((0xfffffe + x17) - x33);
+ out[7] = ((0x1fffffe + x19) - x35);
+ out[8] = ((0xfffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..533db8388
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0xfffffe + x18) - x34), ((0x1fffffe + x19) - x35), ((0xfffffe + x17) - x33), ((0x1fffffe + x15) - x31), ((0xfffffe + x13) - x29), ((0x1fffffe + x11) - x27), ((0xfffffe + x9) - x25), ((0x1fffffe + x7) - x23), ((Const 33554374 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29_9limbs/freeze.c b/src/Specific/solinas32_2e212m29_9limbs/freeze.c
new file mode 100644
index 000000000..fb3ef04d0
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777187);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0xffffff);
+ { 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 x6, 0x7fffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0xffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0xffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0xffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7fffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & Const 16777187);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0xffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x7fffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0xffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x7fffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0xffffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x7fffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0xffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x7fffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..2125433f9
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, Const 16777187);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0xffffff);
+ 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 x6, 0x7fffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0xffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0xffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0xffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7fffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & Const 16777187);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0xffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x7fffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0xffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x7fffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0xffffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x7fffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0xffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x7fffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_8limbs/feadd.c b/src/Specific/solinas32_2e213m3_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_8limbs/femul.c b/src/Specific/solinas32_2e213m3_8limbs/femul.c
new file mode 100644
index 000000000..6882c73c2
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x3 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x3 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x3 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { uint64_t x39 = (((uint64_t)x5 * x19) + (0x3 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x1b);
+ { uint32_t x41 = ((uint32_t)x39 & 0x7ffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x1b);
+ { uint32_t x44 = ((uint32_t)x42 & 0x7ffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x1a);
+ { uint32_t x47 = ((uint32_t)x45 & 0x3ffffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x1b);
+ { uint32_t x50 = ((uint32_t)x48 & 0x7ffffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x1b);
+ { uint32_t x53 = ((uint32_t)x51 & 0x7ffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x1a);
+ { uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint64_t x58 = (x57 >> 0x1b);
+ { uint32_t x59 = ((uint32_t)x57 & 0x7ffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint64_t x61 = (x60 >> 0x1a);
+ { uint32_t x62 = ((uint32_t)x60 & 0x3ffffff);
+ { uint64_t x63 = (x41 + (0x3 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x1b);
+ { uint32_t x65 = ((uint32_t)x63 & 0x7ffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x1b);
+ { uint32_t x68 = (x66 & 0x7ffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_8limbs/femulDisplay.log b/src/Specific/solinas32_2e213m3_8limbs/femulDisplay.log
new file mode 100644
index 000000000..92dccb9f6
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x3 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x3 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x3 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ uint64_t x39 = (((uint64_t)x5 * x19) + (0x3 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x1b);
+ uint32_t x41 = ((uint32_t)x39 & 0x7ffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x1b);
+ uint32_t x44 = ((uint32_t)x42 & 0x7ffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x1a);
+ uint32_t x47 = ((uint32_t)x45 & 0x3ffffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x1b);
+ uint32_t x50 = ((uint32_t)x48 & 0x7ffffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x1b);
+ uint32_t x53 = ((uint32_t)x51 & 0x7ffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x1a);
+ uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
+ uint64_t x57 = (x55 + x33);
+ uint64_t x58 = (x57 >> 0x1b);
+ uint32_t x59 = ((uint32_t)x57 & 0x7ffffff);
+ uint64_t x60 = (x58 + x32);
+ uint64_t x61 = (x60 >> 0x1a);
+ uint32_t x62 = ((uint32_t)x60 & 0x3ffffff);
+ uint64_t x63 = (x41 + (0x3 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x1b);
+ uint32_t x65 = ((uint32_t)x63 & 0x7ffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x1b);
+ uint32_t x68 = (x66 & 0x7ffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesquare.c b/src/Specific/solinas32_2e213m3_8limbs/fesquare.c
new file mode 100644
index 000000000..3bd305b83
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { uint64_t x22 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x1b);
+ { uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x1b);
+ { uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x1a);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x1b);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x1b);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x1a);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint64_t x41 = (x40 >> 0x1b);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint64_t x44 = (x43 >> 0x1a);
+ { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ { uint64_t x46 = (x24 + (0x3 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x1b);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x1b);
+ { uint32_t x51 = (x49 & 0x7ffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..be2417c6c
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ uint64_t x22 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x1b);
+ uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x1b);
+ uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x1a);
+ uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x1b);
+ uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x1b);
+ uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x1a);
+ uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ uint64_t x40 = (x38 + x16);
+ uint64_t x41 = (x40 >> 0x1b);
+ uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ uint64_t x43 = (x41 + x15);
+ uint64_t x44 = (x43 >> 0x1a);
+ uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ uint64_t x46 = (x24 + (0x3 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x1b);
+ uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x1b);
+ uint32_t x51 = (x49 & 0x7ffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesub.c b/src/Specific/solinas32_2e213m3_8limbs/fesub.c
new file mode 100644
index 000000000..b533d8d58
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((Const 268435450 + x5) - x19);
+ out[1] = ((0xffffffe + x7) - x21);
+ out[2] = ((0x7fffffe + x9) - x23);
+ out[3] = ((0xffffffe + x11) - x25);
+ out[4] = ((0xffffffe + x13) - x27);
+ out[5] = ((0x7fffffe + x15) - x29);
+ out[6] = ((0xffffffe + x17) - x31);
+ out[7] = ((0x7fffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..55262da71
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0x7fffffe + x16) - x30), ((0xffffffe + x17) - x31), ((0x7fffffe + x15) - x29), ((0xffffffe + x13) - x27), ((0xffffffe + x11) - x25), ((0x7fffffe + x9) - x23), ((0xffffffe + x7) - x21), ((Const 268435450 + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_8limbs/freeze.c b/src/Specific/solinas32_2e213m3_8limbs/freeze.c
new file mode 100644
index 000000000..ee5672b0b
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 134217725);
+ { 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 x4, 0x7ffffff);
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3ffffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x7ffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x7ffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & Const 134217725);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0x7ffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x3ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0x7ffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0x7ffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x3ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0x7ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x3ffffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..db6ef377b
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 134217725);
+ 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 x4, 0x7ffffff);
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x3ffffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x7ffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x7ffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & Const 134217725);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0x7ffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x3ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0x7ffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0x7ffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x3ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0x7ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x3ffffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_9limbs/feadd.c b/src/Specific/solinas32_2e213m3_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_9limbs/femul.c b/src/Specific/solinas32_2e213m3_9limbs/femul.c
new file mode 100644
index 000000000..324d182bc
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x3 * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x3 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x3 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x34)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (0x2 * ((uint64_t)x18 * x31)))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x3 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x3 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x3 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x18);
+ { uint32_t x46 = ((uint32_t)x44 & 0xffffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint32_t x48 = (uint32_t) (x47 >> 0x18);
+ { uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x17);
+ { uint32_t x52 = ((uint32_t)x50 & 0x7fffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint32_t x54 = (uint32_t) (x53 >> 0x18);
+ { uint32_t x55 = ((uint32_t)x53 & 0xffffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint32_t x57 = (uint32_t) (x56 >> 0x18);
+ { uint32_t x58 = ((uint32_t)x56 & 0xffffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint32_t x60 = (uint32_t) (x59 >> 0x17);
+ { uint32_t x61 = ((uint32_t)x59 & 0x7fffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint32_t x63 = (uint32_t) (x62 >> 0x18);
+ { uint32_t x64 = ((uint32_t)x62 & 0xffffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x18);
+ { uint32_t x67 = ((uint32_t)x65 & 0xffffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint32_t x69 = (uint32_t) (x68 >> 0x17);
+ { uint32_t x70 = ((uint32_t)x68 & 0x7fffff);
+ { uint64_t x71 = (x46 + ((uint64_t)0x3 * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x18);
+ { uint32_t x73 = ((uint32_t)x71 & 0xffffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x18);
+ { uint32_t x76 = (x74 & 0xffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_9limbs/femulDisplay.log b/src/Specific/solinas32_2e213m3_9limbs/femulDisplay.log
new file mode 100644
index 000000000..d89c7fb60
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x3 * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x3 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x3 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x34)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (0x2 * ((uint64_t)x18 * x31)))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x3 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x3 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x3 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x18);
+ uint32_t x46 = ((uint32_t)x44 & 0xffffff);
+ uint64_t x47 = (x45 + x43);
+ uint32_t x48 = (uint32_t) (x47 >> 0x18);
+ uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x17);
+ uint32_t x52 = ((uint32_t)x50 & 0x7fffff);
+ uint64_t x53 = (x51 + x41);
+ uint32_t x54 = (uint32_t) (x53 >> 0x18);
+ uint32_t x55 = ((uint32_t)x53 & 0xffffff);
+ uint64_t x56 = (x54 + x40);
+ uint32_t x57 = (uint32_t) (x56 >> 0x18);
+ uint32_t x58 = ((uint32_t)x56 & 0xffffff);
+ uint64_t x59 = (x57 + x39);
+ uint32_t x60 = (uint32_t) (x59 >> 0x17);
+ uint32_t x61 = ((uint32_t)x59 & 0x7fffff);
+ uint64_t x62 = (x60 + x38);
+ uint32_t x63 = (uint32_t) (x62 >> 0x18);
+ uint32_t x64 = ((uint32_t)x62 & 0xffffff);
+ uint64_t x65 = (x63 + x37);
+ uint32_t x66 = (uint32_t) (x65 >> 0x18);
+ uint32_t x67 = ((uint32_t)x65 & 0xffffff);
+ uint64_t x68 = (x66 + x36);
+ uint32_t x69 = (uint32_t) (x68 >> 0x17);
+ uint32_t x70 = ((uint32_t)x68 & 0x7fffff);
+ uint64_t x71 = (x46 + ((uint64_t)0x3 * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x18);
+ uint32_t x73 = ((uint32_t)x71 & 0xffffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x18);
+ uint32_t x76 = (x74 & 0xffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesquare.c b/src/Specific/solinas32_2e213m3_9limbs/fesquare.c
new file mode 100644
index 000000000..04143ef6a
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x15)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (0x2 * ((uint64_t)x15 * x12)))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x18);
+ { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x17);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x27 + ((uint64_t)0x3 * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = (x55 & 0xffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..216a0cea8
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x15)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (0x2 * ((uint64_t)x15 * x12)))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x18);
+ uint32_t x27 = ((uint32_t)x25 & 0xffffff);
+ uint64_t x28 = (x26 + x24);
+ uint32_t x29 = (uint32_t) (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x22);
+ uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x21);
+ uint32_t x38 = (uint32_t) (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x20);
+ uint32_t x41 = (uint32_t) (x40 >> 0x17);
+ uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ uint64_t x43 = (x41 + x19);
+ uint32_t x44 = (uint32_t) (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x44 + x18);
+ uint32_t x47 = (uint32_t) (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x17);
+ uint32_t x50 = (uint32_t) (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x27 + ((uint64_t)0x3 * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x18);
+ uint32_t x57 = (x55 & 0xffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesub.c b/src/Specific/solinas32_2e213m3_9limbs/fesub.c
new file mode 100644
index 000000000..fe8f6c219
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((Const 33554426 + x5) - x21);
+ out[1] = ((0x1fffffe + x7) - x23);
+ out[2] = ((0xfffffe + x9) - x25);
+ out[3] = ((0x1fffffe + x11) - x27);
+ out[4] = ((0x1fffffe + x13) - x29);
+ out[5] = ((0xfffffe + x15) - x31);
+ out[6] = ((0x1fffffe + x17) - x33);
+ out[7] = ((0x1fffffe + x19) - x35);
+ out[8] = ((0xfffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..6ee5194a0
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0xfffffe + x18) - x34), ((0x1fffffe + x19) - x35), ((0x1fffffe + x17) - x33), ((0xfffffe + x15) - x31), ((0x1fffffe + x13) - x29), ((0x1fffffe + x11) - x27), ((0xfffffe + x9) - x25), ((0x1fffffe + x7) - x23), ((Const 33554426 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3_9limbs/freeze.c b/src/Specific/solinas32_2e213m3_9limbs/freeze.c
new file mode 100644
index 000000000..de950d54f
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffd);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0xffffff);
+ { 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 x6, 0x7fffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0xffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0xffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7fffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0xffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0xffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7fffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & 0xfffffd);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0xffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x7fffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0xffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0xffffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x7fffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0xffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0xffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x7fffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..d2d337856
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, 0xfffffd);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0xffffff);
+ 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 x6, 0x7fffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0xffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0xffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7fffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0xffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0xffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7fffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & 0xfffffd);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0xffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x7fffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0xffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0xffffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x7fffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0xffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0xffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x7fffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.c b/src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.c
new file mode 100644
index 000000000..57dd4e1af
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.log b/src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..8a4c51148
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/femul.c b/src/Specific/solinas32_2e216m2e108m1_10limbs/femul.c
new file mode 100644
index 000000000..55f8155cd
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/femul.c
@@ -0,0 +1,97 @@
+static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ { uint64_t x40 = ((0x2 * ((uint64_t)(x13 + x20) * (x31 + x38))) - (0x2 * ((uint64_t)x13 * x31)));
+ { uint64_t x41 = ((((uint64_t)(x11 + x21) * (x31 + x38)) + ((uint64_t)(x13 + x20) * (x29 + x39))) - (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29)));
+ { uint64_t x42 = (((0x2 * ((uint64_t)(x9 + x19) * (x31 + x38))) + (((uint64_t)(x11 + x21) * (x29 + x39)) + (0x2 * ((uint64_t)(x13 + x20) * (x27 + x37))))) - ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (0x2 * ((uint64_t)x13 * x27)))));
+ { uint64_t x43 = (((0x2 * ((uint64_t)(x7 + x17) * (x31 + x38))) + ((0x2 * ((uint64_t)(x9 + x19) * (x29 + x39))) + ((0x2 * ((uint64_t)(x11 + x21) * (x27 + x37))) + (0x2 * ((uint64_t)(x13 + x20) * (x25 + x35)))))) - ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + (0x2 * ((uint64_t)x13 * x25))))));
+ { uint64_t x44 = ((((uint64_t)(x5 + x15) * (x31 + x38)) + (((uint64_t)(x7 + x17) * (x29 + x39)) + ((0x2 * ((uint64_t)(x9 + x19) * (x27 + x37))) + (((uint64_t)(x11 + x21) * (x25 + x35)) + ((uint64_t)(x13 + x20) * (x23 + x33)))))) - (((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))));
+ { uint64_t x45 = ((((uint64_t)(x5 + x15) * (x29 + x39)) + ((0x2 * ((uint64_t)(x7 + x17) * (x27 + x37))) + ((0x2 * ((uint64_t)(x9 + x19) * (x25 + x35))) + ((uint64_t)(x11 + x21) * (x23 + x33))))) - (((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))));
+ { uint64_t x46 = ((((uint64_t)(x5 + x15) * (x27 + x37)) + (((uint64_t)(x7 + x17) * (x25 + x35)) + ((uint64_t)(x9 + x19) * (x23 + x33)))) - (((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))));
+ { uint64_t x47 = ((((uint64_t)(x5 + x15) * (x25 + x35)) + ((uint64_t)(x7 + x17) * (x23 + x33))) - (((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)));
+ { uint64_t x48 = (((uint64_t)(x5 + x15) * (x23 + x33)) - ((uint64_t)x5 * x23));
+ { uint64_t x49 = ((((0x2 * ((uint64_t)x13 * x31)) + (0x2 * ((uint64_t)x20 * x38))) + x45) + x40);
+ { uint64_t x50 = ((((((uint64_t)x11 * x31) + ((uint64_t)x13 * x29)) + (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))) + x46) + x41);
+ { uint64_t x51 = (((((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (0x2 * ((uint64_t)x13 * x27)))) + ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))) + x47) + x42);
+ { uint64_t x52 = (((((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + (0x2 * ((uint64_t)x13 * x25))))) + ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))) + x48) + x43);
+ { uint64_t x53 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33))))));
+ { uint64_t x54 = (((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x21 * x33))))) + x40);
+ { uint64_t x55 = (((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((uint64_t)x19 * x33)))) + x41);
+ { uint64_t x56 = (((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))) + x42);
+ { uint64_t x57 = ((((uint64_t)x5 * x23) + ((uint64_t)x15 * x33)) + x43);
+ { uint32_t x58 = (uint32_t) (x53 >> 0x15);
+ { uint32_t x59 = ((uint32_t)x53 & 0x1fffff);
+ { uint32_t x60 = (uint32_t) (x44 >> 0x15);
+ { uint32_t x61 = ((uint32_t)x44 & 0x1fffff);
+ { uint64_t x62 = (((uint64_t)0x200000 * x60) + x61);
+ { uint32_t x63 = (uint32_t) (x62 >> 0x15);
+ { uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
+ { uint64_t x65 = ((x58 + x52) + x63);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ { uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ { uint64_t x68 = (x57 + x63);
+ { uint32_t x69 = (uint32_t) (x68 >> 0x16);
+ { uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
+ { uint64_t x71 = (x66 + x51);
+ { uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ { uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ { uint64_t x74 = (x69 + x56);
+ { uint32_t x75 = (uint32_t) (x74 >> 0x16);
+ { uint32_t x76 = ((uint32_t)x74 & 0x3fffff);
+ { uint64_t x77 = (x72 + x50);
+ { uint32_t x78 = (uint32_t) (x77 >> 0x15);
+ { uint32_t x79 = ((uint32_t)x77 & 0x1fffff);
+ { uint64_t x80 = (x75 + x55);
+ { uint32_t x81 = (uint32_t) (x80 >> 0x15);
+ { uint32_t x82 = ((uint32_t)x80 & 0x1fffff);
+ { uint64_t x83 = (x78 + x49);
+ { uint32_t x84 = (uint32_t) (x83 >> 0x16);
+ { uint32_t x85 = ((uint32_t)x83 & 0x3fffff);
+ { uint64_t x86 = (x81 + x54);
+ { uint32_t x87 = (uint32_t) (x86 >> 0x16);
+ { uint32_t x88 = ((uint32_t)x86 & 0x3fffff);
+ { uint32_t x89 = (x84 + x64);
+ { uint32_t x90 = (x89 >> 0x15);
+ { uint32_t x91 = (x89 & 0x1fffff);
+ { uint32_t x92 = (x87 + x59);
+ { uint32_t x93 = (x92 >> 0x15);
+ { uint32_t x94 = (x92 & 0x1fffff);
+ { uint32_t x95 = ((0x200000 * x90) + x91);
+ { uint32_t x96 = (x95 >> 0x15);
+ { uint32_t x97 = (x95 & 0x1fffff);
+ { uint32_t x98 = ((x93 + x67) + x96);
+ { uint32_t x99 = (x98 >> 0x16);
+ { uint32_t x100 = (x98 & 0x3fffff);
+ { uint32_t x101 = (x70 + x96);
+ { uint32_t x102 = (x101 >> 0x16);
+ { uint32_t x103 = (x101 & 0x3fffff);
+ out[0] = x103;
+ out[1] = (x102 + x76);
+ out[2] = x82;
+ out[3] = x88;
+ out[4] = x94;
+ out[5] = x100;
+ out[6] = (x99 + x73);
+ out[7] = x79;
+ out[8] = x85;
+ out[9] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.log b/src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.log
new file mode 100644
index 000000000..5dfdeb51e
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.log
@@ -0,0 +1,71 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint64_t x40 = ((0x2 * ((uint64_t)(x13 + x20) * (x31 + x38))) - (0x2 * ((uint64_t)x13 * x31)));
+ uint64_t x41 = ((((uint64_t)(x11 + x21) * (x31 + x38)) + ((uint64_t)(x13 + x20) * (x29 + x39))) - (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29)));
+ uint64_t x42 = (((0x2 * ((uint64_t)(x9 + x19) * (x31 + x38))) + (((uint64_t)(x11 + x21) * (x29 + x39)) + (0x2 * ((uint64_t)(x13 + x20) * (x27 + x37))))) - ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (0x2 * ((uint64_t)x13 * x27)))));
+ uint64_t x43 = (((0x2 * ((uint64_t)(x7 + x17) * (x31 + x38))) + ((0x2 * ((uint64_t)(x9 + x19) * (x29 + x39))) + ((0x2 * ((uint64_t)(x11 + x21) * (x27 + x37))) + (0x2 * ((uint64_t)(x13 + x20) * (x25 + x35)))))) - ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + (0x2 * ((uint64_t)x13 * x25))))));
+ uint64_t x44 = ((((uint64_t)(x5 + x15) * (x31 + x38)) + (((uint64_t)(x7 + x17) * (x29 + x39)) + ((0x2 * ((uint64_t)(x9 + x19) * (x27 + x37))) + (((uint64_t)(x11 + x21) * (x25 + x35)) + ((uint64_t)(x13 + x20) * (x23 + x33)))))) - (((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))));
+ uint64_t x45 = ((((uint64_t)(x5 + x15) * (x29 + x39)) + ((0x2 * ((uint64_t)(x7 + x17) * (x27 + x37))) + ((0x2 * ((uint64_t)(x9 + x19) * (x25 + x35))) + ((uint64_t)(x11 + x21) * (x23 + x33))))) - (((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))));
+ uint64_t x46 = ((((uint64_t)(x5 + x15) * (x27 + x37)) + (((uint64_t)(x7 + x17) * (x25 + x35)) + ((uint64_t)(x9 + x19) * (x23 + x33)))) - (((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))));
+ uint64_t x47 = ((((uint64_t)(x5 + x15) * (x25 + x35)) + ((uint64_t)(x7 + x17) * (x23 + x33))) - (((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)));
+ uint64_t x48 = (((uint64_t)(x5 + x15) * (x23 + x33)) - ((uint64_t)x5 * x23));
+ uint64_t x49 = ((((0x2 * ((uint64_t)x13 * x31)) + (0x2 * ((uint64_t)x20 * x38))) + x45) + x40);
+ uint64_t x50 = ((((((uint64_t)x11 * x31) + ((uint64_t)x13 * x29)) + (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))) + x46) + x41);
+ uint64_t x51 = (((((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (0x2 * ((uint64_t)x13 * x27)))) + ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))) + x47) + x42);
+ uint64_t x52 = (((((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + (0x2 * ((uint64_t)x13 * x25))))) + ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))) + x48) + x43);
+ uint64_t x53 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33))))));
+ uint64_t x54 = (((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x21 * x33))))) + x40);
+ uint64_t x55 = (((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((uint64_t)x19 * x33)))) + x41);
+ uint64_t x56 = (((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))) + x42);
+ uint64_t x57 = ((((uint64_t)x5 * x23) + ((uint64_t)x15 * x33)) + x43);
+ uint32_t x58 = (uint32_t) (x53 >> 0x15);
+ uint32_t x59 = ((uint32_t)x53 & 0x1fffff);
+ uint32_t x60 = (uint32_t) (x44 >> 0x15);
+ uint32_t x61 = ((uint32_t)x44 & 0x1fffff);
+ uint64_t x62 = (((uint64_t)0x200000 * x60) + x61);
+ uint32_t x63 = (uint32_t) (x62 >> 0x15);
+ uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
+ uint64_t x65 = ((x58 + x52) + x63);
+ uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ uint64_t x68 = (x57 + x63);
+ uint32_t x69 = (uint32_t) (x68 >> 0x16);
+ uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
+ uint64_t x71 = (x66 + x51);
+ uint32_t x72 = (uint32_t) (x71 >> 0x16);
+ uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
+ uint64_t x74 = (x69 + x56);
+ uint32_t x75 = (uint32_t) (x74 >> 0x16);
+ uint32_t x76 = ((uint32_t)x74 & 0x3fffff);
+ uint64_t x77 = (x72 + x50);
+ uint32_t x78 = (uint32_t) (x77 >> 0x15);
+ uint32_t x79 = ((uint32_t)x77 & 0x1fffff);
+ uint64_t x80 = (x75 + x55);
+ uint32_t x81 = (uint32_t) (x80 >> 0x15);
+ uint32_t x82 = ((uint32_t)x80 & 0x1fffff);
+ uint64_t x83 = (x78 + x49);
+ uint32_t x84 = (uint32_t) (x83 >> 0x16);
+ uint32_t x85 = ((uint32_t)x83 & 0x3fffff);
+ uint64_t x86 = (x81 + x54);
+ uint32_t x87 = (uint32_t) (x86 >> 0x16);
+ uint32_t x88 = ((uint32_t)x86 & 0x3fffff);
+ uint32_t x89 = (x84 + x64);
+ uint32_t x90 = (x89 >> 0x15);
+ uint32_t x91 = (x89 & 0x1fffff);
+ uint32_t x92 = (x87 + x59);
+ uint32_t x93 = (x92 >> 0x15);
+ uint32_t x94 = (x92 & 0x1fffff);
+ uint32_t x95 = ((0x200000 * x90) + x91);
+ uint32_t x96 = (x95 >> 0x15);
+ uint32_t x97 = (x95 & 0x1fffff);
+ uint32_t x98 = ((x93 + x67) + x96);
+ uint32_t x99 = (x98 >> 0x16);
+ uint32_t x100 = (x98 & 0x3fffff);
+ uint32_t x101 = (x70 + x96);
+ uint32_t x102 = (x101 >> 0x16);
+ uint32_t x103 = (x101 & 0x3fffff);
+ return (Return x97, Return x85, Return x79, (x99 + x73), Return x100, Return x94, Return x88, Return x82, (x102 + x76), Return x103))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.c b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.c
new file mode 100644
index 000000000..f38e5623d
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.c
@@ -0,0 +1,87 @@
+static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x19 = ((0x2 * ((uint64_t)(x10 + x17) * (x10 + x17))) - (0x2 * ((uint64_t)x10 * x10)));
+ { uint64_t x20 = ((((uint64_t)(x8 + x18) * (x10 + x17)) + ((uint64_t)(x10 + x17) * (x8 + x18))) - (((uint64_t)x8 * x10) + ((uint64_t)x10 * x8)));
+ { uint64_t x21 = (((0x2 * ((uint64_t)(x6 + x16) * (x10 + x17))) + (((uint64_t)(x8 + x18) * (x8 + x18)) + (0x2 * ((uint64_t)(x10 + x17) * (x6 + x16))))) - ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + (0x2 * ((uint64_t)x10 * x6)))));
+ { uint64_t x22 = (((0x2 * ((uint64_t)(x4 + x14) * (x10 + x17))) + ((0x2 * ((uint64_t)(x6 + x16) * (x8 + x18))) + ((0x2 * ((uint64_t)(x8 + x18) * (x6 + x16))) + (0x2 * ((uint64_t)(x10 + x17) * (x4 + x14)))))) - ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (0x2 * ((uint64_t)x10 * x4))))));
+ { uint64_t x23 = ((((uint64_t)(x2 + x12) * (x10 + x17)) + (((uint64_t)(x4 + x14) * (x8 + x18)) + ((0x2 * ((uint64_t)(x6 + x16) * (x6 + x16))) + (((uint64_t)(x8 + x18) * (x4 + x14)) + ((uint64_t)(x10 + x17) * (x2 + x12)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
+ { uint64_t x24 = ((((uint64_t)(x2 + x12) * (x8 + x18)) + ((0x2 * ((uint64_t)(x4 + x14) * (x6 + x16))) + ((0x2 * ((uint64_t)(x6 + x16) * (x4 + x14))) + ((uint64_t)(x8 + x18) * (x2 + x12))))) - (((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))));
+ { uint64_t x25 = ((((uint64_t)(x2 + x12) * (x6 + x16)) + (((uint64_t)(x4 + x14) * (x4 + x14)) + ((uint64_t)(x6 + x16) * (x2 + x12)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
+ { uint64_t x26 = ((((uint64_t)(x2 + x12) * (x4 + x14)) + ((uint64_t)(x4 + x14) * (x2 + x12))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
+ { uint64_t x27 = (((uint64_t)(x2 + x12) * (x2 + x12)) - ((uint64_t)x2 * x2));
+ { uint64_t x28 = ((((0x2 * ((uint64_t)x10 * x10)) + (0x2 * ((uint64_t)x17 * x17))) + x24) + x19);
+ { uint64_t x29 = ((((((uint64_t)x8 * x10) + ((uint64_t)x10 * x8)) + (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))) + x25) + x20);
+ { uint64_t x30 = (((((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + (0x2 * ((uint64_t)x10 * x6)))) + ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))) + x26) + x21);
+ { uint64_t x31 = (((((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (0x2 * ((uint64_t)x10 * x4))))) + ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))) + x27) + x22);
+ { uint64_t x32 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12))))));
+ { uint64_t x33 = (((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((uint64_t)x18 * x12))))) + x19);
+ { uint64_t x34 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12)))) + x20);
+ { uint64_t x35 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x12 * x14) + ((uint64_t)x14 * x12))) + x21);
+ { uint64_t x36 = ((((uint64_t)x2 * x2) + ((uint64_t)x12 * x12)) + x22);
+ { uint32_t x37 = (uint32_t) (x32 >> 0x15);
+ { uint32_t x38 = ((uint32_t)x32 & 0x1fffff);
+ { uint32_t x39 = (uint32_t) (x23 >> 0x15);
+ { uint32_t x40 = ((uint32_t)x23 & 0x1fffff);
+ { uint64_t x41 = (((uint64_t)0x200000 * x39) + x40);
+ { uint32_t x42 = (uint32_t) (x41 >> 0x15);
+ { uint32_t x43 = ((uint32_t)x41 & 0x1fffff);
+ { uint64_t x44 = ((x37 + x31) + x42);
+ { uint32_t x45 = (uint32_t) (x44 >> 0x16);
+ { uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ { uint64_t x47 = (x36 + x42);
+ { uint32_t x48 = (uint32_t) (x47 >> 0x16);
+ { uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
+ { uint64_t x50 = (x45 + x30);
+ { uint32_t x51 = (uint32_t) (x50 >> 0x16);
+ { uint32_t x52 = ((uint32_t)x50 & 0x3fffff);
+ { uint64_t x53 = (x48 + x35);
+ { uint32_t x54 = (uint32_t) (x53 >> 0x16);
+ { uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
+ { uint64_t x56 = (x51 + x29);
+ { uint32_t x57 = (uint32_t) (x56 >> 0x15);
+ { uint32_t x58 = ((uint32_t)x56 & 0x1fffff);
+ { uint64_t x59 = (x54 + x34);
+ { uint32_t x60 = (uint32_t) (x59 >> 0x15);
+ { uint32_t x61 = ((uint32_t)x59 & 0x1fffff);
+ { uint64_t x62 = (x57 + x28);
+ { uint32_t x63 = (uint32_t) (x62 >> 0x16);
+ { uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
+ { uint64_t x65 = (x60 + x33);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ { uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ { uint32_t x68 = (x63 + x43);
+ { uint32_t x69 = (x68 >> 0x15);
+ { uint32_t x70 = (x68 & 0x1fffff);
+ { uint32_t x71 = (x66 + x38);
+ { uint32_t x72 = (x71 >> 0x15);
+ { uint32_t x73 = (x71 & 0x1fffff);
+ { uint32_t x74 = ((0x200000 * x69) + x70);
+ { uint32_t x75 = (x74 >> 0x15);
+ { uint32_t x76 = (x74 & 0x1fffff);
+ { uint32_t x77 = ((x72 + x46) + x75);
+ { uint32_t x78 = (x77 >> 0x16);
+ { uint32_t x79 = (x77 & 0x3fffff);
+ { uint32_t x80 = (x49 + x75);
+ { uint32_t x81 = (x80 >> 0x16);
+ { uint32_t x82 = (x80 & 0x3fffff);
+ out[0] = x82;
+ out[1] = (x81 + x55);
+ out[2] = x61;
+ out[3] = x67;
+ out[4] = x73;
+ out[5] = x79;
+ out[6] = (x78 + x52);
+ out[7] = x58;
+ out[8] = x64;
+ out[9] = x76;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.log b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..9ccf95bb8
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.log
@@ -0,0 +1,71 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x19 = ((0x2 * ((uint64_t)(x10 + x17) * (x10 + x17))) - (0x2 * ((uint64_t)x10 * x10)));
+ uint64_t x20 = ((((uint64_t)(x8 + x18) * (x10 + x17)) + ((uint64_t)(x10 + x17) * (x8 + x18))) - (((uint64_t)x8 * x10) + ((uint64_t)x10 * x8)));
+ uint64_t x21 = (((0x2 * ((uint64_t)(x6 + x16) * (x10 + x17))) + (((uint64_t)(x8 + x18) * (x8 + x18)) + (0x2 * ((uint64_t)(x10 + x17) * (x6 + x16))))) - ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + (0x2 * ((uint64_t)x10 * x6)))));
+ uint64_t x22 = (((0x2 * ((uint64_t)(x4 + x14) * (x10 + x17))) + ((0x2 * ((uint64_t)(x6 + x16) * (x8 + x18))) + ((0x2 * ((uint64_t)(x8 + x18) * (x6 + x16))) + (0x2 * ((uint64_t)(x10 + x17) * (x4 + x14)))))) - ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (0x2 * ((uint64_t)x10 * x4))))));
+ uint64_t x23 = ((((uint64_t)(x2 + x12) * (x10 + x17)) + (((uint64_t)(x4 + x14) * (x8 + x18)) + ((0x2 * ((uint64_t)(x6 + x16) * (x6 + x16))) + (((uint64_t)(x8 + x18) * (x4 + x14)) + ((uint64_t)(x10 + x17) * (x2 + x12)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
+ uint64_t x24 = ((((uint64_t)(x2 + x12) * (x8 + x18)) + ((0x2 * ((uint64_t)(x4 + x14) * (x6 + x16))) + ((0x2 * ((uint64_t)(x6 + x16) * (x4 + x14))) + ((uint64_t)(x8 + x18) * (x2 + x12))))) - (((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))));
+ uint64_t x25 = ((((uint64_t)(x2 + x12) * (x6 + x16)) + (((uint64_t)(x4 + x14) * (x4 + x14)) + ((uint64_t)(x6 + x16) * (x2 + x12)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
+ uint64_t x26 = ((((uint64_t)(x2 + x12) * (x4 + x14)) + ((uint64_t)(x4 + x14) * (x2 + x12))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
+ uint64_t x27 = (((uint64_t)(x2 + x12) * (x2 + x12)) - ((uint64_t)x2 * x2));
+ uint64_t x28 = ((((0x2 * ((uint64_t)x10 * x10)) + (0x2 * ((uint64_t)x17 * x17))) + x24) + x19);
+ uint64_t x29 = ((((((uint64_t)x8 * x10) + ((uint64_t)x10 * x8)) + (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))) + x25) + x20);
+ uint64_t x30 = (((((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + (0x2 * ((uint64_t)x10 * x6)))) + ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))) + x26) + x21);
+ uint64_t x31 = (((((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (0x2 * ((uint64_t)x10 * x4))))) + ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))) + x27) + x22);
+ uint64_t x32 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12))))));
+ uint64_t x33 = (((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((uint64_t)x18 * x12))))) + x19);
+ uint64_t x34 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12)))) + x20);
+ uint64_t x35 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x12 * x14) + ((uint64_t)x14 * x12))) + x21);
+ uint64_t x36 = ((((uint64_t)x2 * x2) + ((uint64_t)x12 * x12)) + x22);
+ uint32_t x37 = (uint32_t) (x32 >> 0x15);
+ uint32_t x38 = ((uint32_t)x32 & 0x1fffff);
+ uint32_t x39 = (uint32_t) (x23 >> 0x15);
+ uint32_t x40 = ((uint32_t)x23 & 0x1fffff);
+ uint64_t x41 = (((uint64_t)0x200000 * x39) + x40);
+ uint32_t x42 = (uint32_t) (x41 >> 0x15);
+ uint32_t x43 = ((uint32_t)x41 & 0x1fffff);
+ uint64_t x44 = ((x37 + x31) + x42);
+ uint32_t x45 = (uint32_t) (x44 >> 0x16);
+ uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
+ uint64_t x47 = (x36 + x42);
+ uint32_t x48 = (uint32_t) (x47 >> 0x16);
+ uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
+ uint64_t x50 = (x45 + x30);
+ uint32_t x51 = (uint32_t) (x50 >> 0x16);
+ uint32_t x52 = ((uint32_t)x50 & 0x3fffff);
+ uint64_t x53 = (x48 + x35);
+ uint32_t x54 = (uint32_t) (x53 >> 0x16);
+ uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
+ uint64_t x56 = (x51 + x29);
+ uint32_t x57 = (uint32_t) (x56 >> 0x15);
+ uint32_t x58 = ((uint32_t)x56 & 0x1fffff);
+ uint64_t x59 = (x54 + x34);
+ uint32_t x60 = (uint32_t) (x59 >> 0x15);
+ uint32_t x61 = ((uint32_t)x59 & 0x1fffff);
+ uint64_t x62 = (x57 + x28);
+ uint32_t x63 = (uint32_t) (x62 >> 0x16);
+ uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
+ uint64_t x65 = (x60 + x33);
+ uint32_t x66 = (uint32_t) (x65 >> 0x16);
+ uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
+ uint32_t x68 = (x63 + x43);
+ uint32_t x69 = (x68 >> 0x15);
+ uint32_t x70 = (x68 & 0x1fffff);
+ uint32_t x71 = (x66 + x38);
+ uint32_t x72 = (x71 >> 0x15);
+ uint32_t x73 = (x71 & 0x1fffff);
+ uint32_t x74 = ((0x200000 * x69) + x70);
+ uint32_t x75 = (x74 >> 0x15);
+ uint32_t x76 = (x74 & 0x1fffff);
+ uint32_t x77 = ((x72 + x46) + x75);
+ uint32_t x78 = (x77 >> 0x16);
+ uint32_t x79 = (x77 & 0x3fffff);
+ uint32_t x80 = (x49 + x75);
+ uint32_t x81 = (x80 >> 0x16);
+ uint32_t x82 = (x80 & 0x3fffff);
+ return (Return x76, Return x64, Return x58, (x78 + x52), Return x79, Return x73, Return x67, Return x61, (x81 + x55), Return x82))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.c b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.c
new file mode 100644
index 000000000..29ede3439
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = ((0x7ffffe + x5) - x23);
+ out[1] = ((0x7ffffe + x7) - x25);
+ out[2] = ((0x3ffffe + x9) - x27);
+ out[3] = ((0x7ffffe + x11) - x29);
+ out[4] = ((0x3ffffe + x13) - x31);
+ out[5] = ((Const 8388604 + x15) - x33);
+ out[6] = ((0x7ffffe + x17) - x35);
+ out[7] = ((0x3ffffe + x19) - x37);
+ out[8] = ((0x7ffffe + x21) - x39);
+ out[9] = ((0x3ffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.log b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..7e197e3b7
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x3ffffe + x20) - x38), ((0x7ffffe + x21) - x39), ((0x3ffffe + x19) - x37), ((0x7ffffe + x17) - x35), ((Const 8388604 + x15) - x33), ((0x3ffffe + x13) - x31), ((0x7ffffe + x11) - x29), ((0x3ffffe + x9) - x27), ((0x7ffffe + x7) - x25), ((0x7ffffe + x5) - x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.c b/src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.c
new file mode 100644
index 000000000..c9d38d77e
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x1fffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x1fffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x3ffffe);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x1fffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x1fffff);
+ { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ { uint32_t x50 = (x49 & 0x3fffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint32_t x54 = (x49 & 0x3fffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint32_t x58 = (x49 & 0x1fffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint32_t x62 = (x49 & 0x3fffff);
+ { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint32_t x66 = (x49 & 0x1fffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint32_t x70 = (x49 & 0x3ffffe);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint32_t x74 = (x49 & 0x3fffff);
+ { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint32_t x78 = (x49 & 0x1fffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint32_t x82 = (x49 & 0x3fffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint32_t x86 = (x49 & 0x1fffff);
+ { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.log b/src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..4d7d71eea
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x1fffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x1fffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x3ffffe);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x1fffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x1fffff);
+ uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ uint32_t x50 = (x49 & 0x3fffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint32_t x54 = (x49 & 0x3fffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint32_t x58 = (x49 & 0x1fffff);
+ uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint32_t x62 = (x49 & 0x3fffff);
+ uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint32_t x66 = (x49 & 0x1fffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint32_t x70 = (x49 & 0x3ffffe);
+ uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint32_t x74 = (x49 & 0x3fffff);
+ uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint32_t x78 = (x49 & 0x1fffff);
+ uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint32_t x82 = (x49 & 0x3fffff);
+ uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint32_t x86 = (x49 & 0x1fffff);
+ uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_8limbs/feadd.c b/src/Specific/solinas32_2e221m3_8limbs/feadd.c
new file mode 100644
index 000000000..cc3671f75
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/feadd.c
@@ -0,0 +1,27 @@
+static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = (x5 + x19);
+ out[1] = (x7 + x21);
+ out[2] = (x9 + x23);
+ out[3] = (x11 + x25);
+ out[4] = (x13 + x27);
+ out[5] = (x15 + x29);
+ out[6] = (x17 + x31);
+ out[7] = (x16 + x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.log b/src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.log
new file mode 100644
index 000000000..f25c10903
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_8limbs/femul.c b/src/Specific/solinas32_2e221m3_8limbs/femul.c
new file mode 100644
index 000000000..61d58a697
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/femul.c
@@ -0,0 +1,64 @@
+static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint64_t)x16 * x30))));
+ { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x3 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ { uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ { uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x3 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x3 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ { ℤ x39 = (((uint64_t)x5 * x19) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ { uint64_t x40 = (x39 >> 0x1c);
+ { uint32_t x41 = (x39 & 0xfffffff);
+ { uint64_t x42 = (x40 + x38);
+ { uint64_t x43 = (x42 >> 0x1c);
+ { uint32_t x44 = ((uint32_t)x42 & 0xfffffff);
+ { uint64_t x45 = (x43 + x37);
+ { uint64_t x46 = (x45 >> 0x1b);
+ { uint32_t x47 = ((uint32_t)x45 & 0x7ffffff);
+ { uint64_t x48 = (x46 + x36);
+ { uint64_t x49 = (x48 >> 0x1c);
+ { uint32_t x50 = ((uint32_t)x48 & 0xfffffff);
+ { uint64_t x51 = (x49 + x35);
+ { uint64_t x52 = (x51 >> 0x1c);
+ { uint32_t x53 = ((uint32_t)x51 & 0xfffffff);
+ { uint64_t x54 = (x52 + x34);
+ { uint64_t x55 = (x54 >> 0x1b);
+ { uint32_t x56 = ((uint32_t)x54 & 0x7ffffff);
+ { uint64_t x57 = (x55 + x33);
+ { uint64_t x58 = (x57 >> 0x1c);
+ { uint32_t x59 = ((uint32_t)x57 & 0xfffffff);
+ { uint64_t x60 = (x58 + x32);
+ { uint64_t x61 = (x60 >> 0x1b);
+ { uint32_t x62 = ((uint32_t)x60 & 0x7ffffff);
+ { uint64_t x63 = (x41 + (0x3 * x61));
+ { uint32_t x64 = (uint32_t) (x63 >> 0x1c);
+ { uint32_t x65 = ((uint32_t)x63 & 0xfffffff);
+ { uint32_t x66 = (x64 + x44);
+ { uint32_t x67 = (x66 >> 0x1c);
+ { uint32_t x68 = (x66 & 0xfffffff);
+ out[0] = x65;
+ out[1] = x68;
+ out[2] = (x67 + x47);
+ out[3] = x50;
+ out[4] = x53;
+ out[5] = x56;
+ out[6] = x59;
+ out[7] = x62;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_8limbs/femulDisplay.log b/src/Specific/solinas32_2e221m3_8limbs/femulDisplay.log
new file mode 100644
index 000000000..55e612903
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
+ uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint64_t)x16 * x30))));
+ uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x3 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
+ uint64_t x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
+ uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x30)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + (0x2 * ((uint64_t)x16 * x27)))))));
+ uint64_t x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (0x3 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
+ uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x3 * ((0x2 * ((uint64_t)x9 * x30)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + (((uint64_t)x17 * x25) + (0x2 * ((uint64_t)x16 * x23)))))))));
+ ℤ x39 = (((uint64_t)x5 * x19) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
+ uint64_t x40 = (x39 >> 0x1c);
+ uint32_t x41 = (x39 & 0xfffffff);
+ uint64_t x42 = (x40 + x38);
+ uint64_t x43 = (x42 >> 0x1c);
+ uint32_t x44 = ((uint32_t)x42 & 0xfffffff);
+ uint64_t x45 = (x43 + x37);
+ uint64_t x46 = (x45 >> 0x1b);
+ uint32_t x47 = ((uint32_t)x45 & 0x7ffffff);
+ uint64_t x48 = (x46 + x36);
+ uint64_t x49 = (x48 >> 0x1c);
+ uint32_t x50 = ((uint32_t)x48 & 0xfffffff);
+ uint64_t x51 = (x49 + x35);
+ uint64_t x52 = (x51 >> 0x1c);
+ uint32_t x53 = ((uint32_t)x51 & 0xfffffff);
+ uint64_t x54 = (x52 + x34);
+ uint64_t x55 = (x54 >> 0x1b);
+ uint32_t x56 = ((uint32_t)x54 & 0x7ffffff);
+ uint64_t x57 = (x55 + x33);
+ uint64_t x58 = (x57 >> 0x1c);
+ uint32_t x59 = ((uint32_t)x57 & 0xfffffff);
+ uint64_t x60 = (x58 + x32);
+ uint64_t x61 = (x60 >> 0x1b);
+ uint32_t x62 = ((uint32_t)x60 & 0x7ffffff);
+ uint64_t x63 = (x41 + (0x3 * x61));
+ uint32_t x64 = (uint32_t) (x63 >> 0x1c);
+ uint32_t x65 = ((uint32_t)x63 & 0xfffffff);
+ uint32_t x66 = (x64 + x44);
+ uint32_t x67 = (x66 >> 0x1c);
+ uint32_t x68 = (x66 & 0xfffffff);
+ return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesquare.c b/src/Specific/solinas32_2e221m3_8limbs/fesquare.c
new file mode 100644
index 000000000..930bb41d4
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesquare.c
@@ -0,0 +1,56 @@
+static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint64_t)x13 * x13))));
+ { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ { uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ { uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ { ℤ x22 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ { uint64_t x23 = (x22 >> 0x1c);
+ { uint32_t x24 = (x22 & 0xfffffff);
+ { uint64_t x25 = (x23 + x21);
+ { uint64_t x26 = (x25 >> 0x1c);
+ { uint32_t x27 = ((uint32_t)x25 & 0xfffffff);
+ { uint64_t x28 = (x26 + x20);
+ { uint64_t x29 = (x28 >> 0x1b);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ { uint64_t x31 = (x29 + x19);
+ { uint64_t x32 = (x31 >> 0x1c);
+ { uint32_t x33 = ((uint32_t)x31 & 0xfffffff);
+ { uint64_t x34 = (x32 + x18);
+ { uint64_t x35 = (x34 >> 0x1c);
+ { uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
+ { uint64_t x37 = (x35 + x17);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ { uint64_t x40 = (x38 + x16);
+ { uint64_t x41 = (x40 >> 0x1c);
+ { uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
+ { uint64_t x43 = (x41 + x15);
+ { uint64_t x44 = (x43 >> 0x1b);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ { uint64_t x46 = (x24 + (0x3 * x44));
+ { uint32_t x47 = (uint32_t) (x46 >> 0x1c);
+ { uint32_t x48 = ((uint32_t)x46 & 0xfffffff);
+ { uint32_t x49 = (x47 + x27);
+ { uint32_t x50 = (x49 >> 0x1c);
+ { uint32_t x51 = (x49 & 0xfffffff);
+ out[0] = x48;
+ out[1] = x51;
+ out[2] = (x50 + x30);
+ out[3] = x33;
+ out[4] = x36;
+ out[5] = x39;
+ out[6] = x42;
+ out[7] = x45;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.log b/src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.log
new file mode 100644
index 000000000..4b8d4fd4b
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
+ uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint64_t)x13 * x13))));
+ uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
+ uint64_t x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
+ uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x13)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (0x2 * ((uint64_t)x13 * x10)))))));
+ uint64_t x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
+ uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x13)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (0x2 * ((uint64_t)x13 * x6)))))))));
+ ℤ x22 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
+ uint64_t x23 = (x22 >> 0x1c);
+ uint32_t x24 = (x22 & 0xfffffff);
+ uint64_t x25 = (x23 + x21);
+ uint64_t x26 = (x25 >> 0x1c);
+ uint32_t x27 = ((uint32_t)x25 & 0xfffffff);
+ uint64_t x28 = (x26 + x20);
+ uint64_t x29 = (x28 >> 0x1b);
+ uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ uint64_t x31 = (x29 + x19);
+ uint64_t x32 = (x31 >> 0x1c);
+ uint32_t x33 = ((uint32_t)x31 & 0xfffffff);
+ uint64_t x34 = (x32 + x18);
+ uint64_t x35 = (x34 >> 0x1c);
+ uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
+ uint64_t x37 = (x35 + x17);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ uint64_t x40 = (x38 + x16);
+ uint64_t x41 = (x40 >> 0x1c);
+ uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
+ uint64_t x43 = (x41 + x15);
+ uint64_t x44 = (x43 >> 0x1b);
+ uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ uint64_t x46 = (x24 + (0x3 * x44));
+ uint32_t x47 = (uint32_t) (x46 >> 0x1c);
+ uint32_t x48 = ((uint32_t)x46 & 0xfffffff);
+ uint32_t x49 = (x47 + x27);
+ uint32_t x50 = (x49 >> 0x1c);
+ uint32_t x51 = (x49 & 0xfffffff);
+ return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesub.c b/src/Specific/solinas32_2e221m3_8limbs/fesub.c
new file mode 100644
index 000000000..3e092cb13
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesub.c
@@ -0,0 +1,27 @@
+static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x30 = in2[7];
+ { const uint32_t x31 = in2[6];
+ { const uint32_t x29 = in2[5];
+ { const uint32_t x27 = in2[4];
+ { const uint32_t x25 = in2[3];
+ { const uint32_t x23 = in2[2];
+ { const uint32_t x21 = in2[1];
+ { const uint32_t x19 = in2[0];
+ out[0] = ((0x1ffffffa + x5) - x19);
+ out[1] = ((0x1ffffffe + x7) - x21);
+ out[2] = ((0xffffffe + x9) - x23);
+ out[3] = ((0x1ffffffe + x11) - x25);
+ out[4] = ((0x1ffffffe + x13) - x27);
+ out[5] = ((0xffffffe + x15) - x29);
+ out[6] = ((0x1ffffffe + x17) - x31);
+ out[7] = ((0xffffffe + x16) - x30);
+ }}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.log b/src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.log
new file mode 100644
index 000000000..978e32873
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
+ (((0xffffffe + x16) - x30), ((0x1ffffffe + x17) - x31), ((0xffffffe + x15) - x29), ((0x1ffffffe + x13) - x27), ((0x1ffffffe + x11) - x25), ((0xffffffe + x9) - x23), ((0x1ffffffe + x7) - x21), ((0x1ffffffa + x5) - x19)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_8limbs/freeze.c b/src/Specific/solinas32_2e221m3_8limbs/freeze.c
new file mode 100644
index 000000000..e31bca57f
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/freeze.c
@@ -0,0 +1,44 @@
+static void freeze(uint32_t out[8], const uint32_t in1[8]) {
+ { const uint32_t x13 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffd);
+ { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffff);
+ { 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 x6, 0x7ffffff);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xfffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x7ffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7ffffff);
+ { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ { uint32_t x40 = (x39 & 0xffffffd);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ { uint32_t x44 = (x39 & 0xfffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ { uint32_t x48 = (x39 & 0x7ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ { uint32_t x52 = (x39 & 0xfffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ { uint32_t x56 = (x39 & 0xfffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ { uint32_t x60 = (x39 & 0x7ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ { uint32_t x64 = (x39 & 0xfffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ { uint32_t x68 = (x39 & 0x7ffffff);
+ { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ out[0] = x42;
+ out[1] = x46;
+ out[2] = x50;
+ out[3] = x54;
+ out[4] = x58;
+ out[5] = x62;
+ out[6] = x66;
+ out[7] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.log b/src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.log
new file mode 100644
index 000000000..175373d3f
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.log
@@ -0,0 +1,32 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, 0xffffffd);
+ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffff);
+ 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 x6, 0x7ffffff);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xfffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x7ffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7ffffff);
+ uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
+ uint32_t x40 = (x39 & 0xffffffd);
+ uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
+ uint32_t x44 = (x39 & 0xfffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
+ uint32_t x48 = (x39 & 0x7ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
+ uint32_t x52 = (x39 & 0xfffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
+ uint32_t x56 = (x39 & 0xfffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
+ uint32_t x60 = (x39 & 0x7ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
+ uint32_t x64 = (x39 & 0xfffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
+ uint32_t x68 = (x39 & 0x7ffffff);
+ uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
+ (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_9limbs/feadd.c b/src/Specific/solinas32_2e221m3_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_9limbs/femul.c b/src/Specific/solinas32_2e221m3_9limbs/femul.c
new file mode 100644
index 000000000..9d11d7afd
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x3 * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x3 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x3 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x3 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x3 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x3 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x19);
+ { uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x19);
+ { uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x18);
+ { uint32_t x52 = ((uint32_t)x50 & 0xffffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint64_t x54 = (x53 >> 0x19);
+ { uint32_t x55 = ((uint32_t)x53 & 0x1ffffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint64_t x57 = (x56 >> 0x18);
+ { uint32_t x58 = ((uint32_t)x56 & 0xffffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint64_t x60 = (x59 >> 0x19);
+ { uint32_t x61 = ((uint32_t)x59 & 0x1ffffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint64_t x63 = (x62 >> 0x18);
+ { uint32_t x64 = ((uint32_t)x62 & 0xffffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint32_t x66 = (uint32_t) (x65 >> 0x19);
+ { uint32_t x67 = ((uint32_t)x65 & 0x1ffffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint64_t x69 = (x68 >> 0x18);
+ { uint32_t x70 = ((uint32_t)x68 & 0xffffff);
+ { uint64_t x71 = (x46 + (0x3 * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x19);
+ { uint32_t x73 = ((uint32_t)x71 & 0x1ffffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x19);
+ { uint32_t x76 = (x74 & 0x1ffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_9limbs/femulDisplay.log b/src/Specific/solinas32_2e221m3_9limbs/femulDisplay.log
new file mode 100644
index 000000000..d8bdb846c
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x3 * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x3 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x3 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x3 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x3 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x3 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x19);
+ uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x19);
+ uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x18);
+ uint32_t x52 = ((uint32_t)x50 & 0xffffff);
+ uint64_t x53 = (x51 + x41);
+ uint64_t x54 = (x53 >> 0x19);
+ uint32_t x55 = ((uint32_t)x53 & 0x1ffffff);
+ uint64_t x56 = (x54 + x40);
+ uint64_t x57 = (x56 >> 0x18);
+ uint32_t x58 = ((uint32_t)x56 & 0xffffff);
+ uint64_t x59 = (x57 + x39);
+ uint64_t x60 = (x59 >> 0x19);
+ uint32_t x61 = ((uint32_t)x59 & 0x1ffffff);
+ uint64_t x62 = (x60 + x38);
+ uint64_t x63 = (x62 >> 0x18);
+ uint32_t x64 = ((uint32_t)x62 & 0xffffff);
+ uint64_t x65 = (x63 + x37);
+ uint32_t x66 = (uint32_t) (x65 >> 0x19);
+ uint32_t x67 = ((uint32_t)x65 & 0x1ffffff);
+ uint64_t x68 = (x66 + x36);
+ uint64_t x69 = (x68 >> 0x18);
+ uint32_t x70 = ((uint32_t)x68 & 0xffffff);
+ uint64_t x71 = (x46 + (0x3 * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x19);
+ uint32_t x73 = ((uint32_t)x71 & 0x1ffffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x19);
+ uint32_t x76 = (x74 & 0x1ffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesquare.c b/src/Specific/solinas32_2e221m3_9limbs/fesquare.c
new file mode 100644
index 000000000..d6e8cf3f3
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint64_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x27 + (0x3 * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x19);
+ { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x19);
+ { uint32_t x57 = (x55 & 0x1ffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..da6b9195e
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x22);
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x20);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x19);
+ uint64_t x44 = (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x44 + x18);
+ uint32_t x47 = (uint32_t) (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x17);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x27 + (0x3 * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x19);
+ uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x19);
+ uint32_t x57 = (x55 & 0x1ffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesub.c b/src/Specific/solinas32_2e221m3_9limbs/fesub.c
new file mode 100644
index 000000000..094cc73ac
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((0x3fffffa + x5) - x21);
+ out[1] = ((0x3fffffe + x7) - x23);
+ out[2] = ((0x1fffffe + x9) - x25);
+ out[3] = ((0x3fffffe + x11) - x27);
+ out[4] = ((0x1fffffe + x13) - x29);
+ out[5] = ((0x3fffffe + x15) - x31);
+ out[6] = ((0x1fffffe + x17) - x33);
+ out[7] = ((0x3fffffe + x19) - x35);
+ out[8] = ((0x1fffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..0cb9b46d8
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x1fffffe + x18) - x34), ((0x3fffffe + x19) - x35), ((0x1fffffe + x17) - x33), ((0x3fffffe + x15) - x31), ((0x1fffffe + x13) - x29), ((0x3fffffe + x11) - x27), ((0x1fffffe + x9) - x25), ((0x3fffffe + x7) - x23), ((0x3fffffa + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3_9limbs/freeze.c b/src/Specific/solinas32_2e221m3_9limbs/freeze.c
new file mode 100644
index 000000000..69217921f
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = 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 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 x4, 0x1ffffff);
+ { 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 x6, 0xffffff);
+ { 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 x8, 0x1ffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0xffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x1ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0xffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0xffffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & 0x1fffffd);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x1ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0xffffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x1ffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0xffffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x1ffffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0xffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x1ffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0xffffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..3bdcfa0ed
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, 0x1fffffd);
+ 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 x4, 0x1ffffff);
+ 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 x6, 0xffffff);
+ 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 x8, 0x1ffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0xffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x1ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0xffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0xffffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & 0x1fffffd);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x1ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0xffffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x1ffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0xffffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x1ffffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0xffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x1ffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0xffffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117_9limbs/feadd.c b/src/Specific/solinas32_2e222m117_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117_9limbs/femul.c b/src/Specific/solinas32_2e222m117_9limbs/femul.c
new file mode 100644
index 000000000..a62885f43
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x75 * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x75 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x75 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x75 * ((0x2 * ((uint64_t)x15 * x34)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (0x2 * ((uint64_t)x18 * x31)))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x75 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x75 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x75 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x75 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x19);
+ { uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x19);
+ { uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x18);
+ { uint32_t x52 = ((uint32_t)x50 & 0xffffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint64_t x54 = (x53 >> 0x19);
+ { uint32_t x55 = ((uint32_t)x53 & 0x1ffffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint64_t x57 = (x56 >> 0x19);
+ { uint32_t x58 = ((uint32_t)x56 & 0x1ffffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint64_t x60 = (x59 >> 0x18);
+ { uint32_t x61 = ((uint32_t)x59 & 0xffffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint64_t x63 = (x62 >> 0x19);
+ { uint32_t x64 = ((uint32_t)x62 & 0x1ffffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint64_t x66 = (x65 >> 0x19);
+ { uint32_t x67 = ((uint32_t)x65 & 0x1ffffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint64_t x69 = (x68 >> 0x18);
+ { uint32_t x70 = ((uint32_t)x68 & 0xffffff);
+ { uint64_t x71 = (x46 + (0x75 * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x19);
+ { uint32_t x73 = ((uint32_t)x71 & 0x1ffffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x19);
+ { uint32_t x76 = (x74 & 0x1ffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e222m117_9limbs/femulDisplay.log b/src/Specific/solinas32_2e222m117_9limbs/femulDisplay.log
new file mode 100644
index 000000000..83ba14b2c
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x75 * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x75 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x75 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x75 * ((0x2 * ((uint64_t)x15 * x34)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (0x2 * ((uint64_t)x18 * x31)))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x75 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x75 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x75 * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x75 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x19);
+ uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x19);
+ uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x18);
+ uint32_t x52 = ((uint32_t)x50 & 0xffffff);
+ uint64_t x53 = (x51 + x41);
+ uint64_t x54 = (x53 >> 0x19);
+ uint32_t x55 = ((uint32_t)x53 & 0x1ffffff);
+ uint64_t x56 = (x54 + x40);
+ uint64_t x57 = (x56 >> 0x19);
+ uint32_t x58 = ((uint32_t)x56 & 0x1ffffff);
+ uint64_t x59 = (x57 + x39);
+ uint64_t x60 = (x59 >> 0x18);
+ uint32_t x61 = ((uint32_t)x59 & 0xffffff);
+ uint64_t x62 = (x60 + x38);
+ uint64_t x63 = (x62 >> 0x19);
+ uint32_t x64 = ((uint32_t)x62 & 0x1ffffff);
+ uint64_t x65 = (x63 + x37);
+ uint64_t x66 = (x65 >> 0x19);
+ uint32_t x67 = ((uint32_t)x65 & 0x1ffffff);
+ uint64_t x68 = (x66 + x36);
+ uint64_t x69 = (x68 >> 0x18);
+ uint32_t x70 = ((uint32_t)x68 & 0xffffff);
+ uint64_t x71 = (x46 + (0x75 * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x19);
+ uint32_t x73 = ((uint32_t)x71 & 0x1ffffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x19);
+ uint32_t x76 = (x74 & 0x1ffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesquare.c b/src/Specific/solinas32_2e222m117_9limbs/fesquare.c
new file mode 100644
index 000000000..c6201cf09
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x75 * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x75 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x75 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x75 * ((0x2 * ((uint64_t)x12 * x15)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (0x2 * ((uint64_t)x15 * x12)))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x75 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x75 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x75 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x75 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint64_t x41 = (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x27 + (0x75 * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x19);
+ { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x19);
+ { uint32_t x57 = (x55 & 0x1ffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..90145be16
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x75 * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x75 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x75 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x75 * ((0x2 * ((uint64_t)x12 * x15)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (0x2 * ((uint64_t)x15 * x12)))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x75 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x75 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x75 * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x75 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x22);
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x20);
+ uint64_t x41 = (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x19);
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x44 + x18);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x17);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x27 + (0x75 * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x19);
+ uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x19);
+ uint32_t x57 = (x55 & 0x1ffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesub.c b/src/Specific/solinas32_2e222m117_9limbs/fesub.c
new file mode 100644
index 000000000..1bf7ca262
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((Const 67108630 + x5) - x21);
+ out[1] = ((0x3fffffe + x7) - x23);
+ out[2] = ((0x1fffffe + x9) - x25);
+ out[3] = ((0x3fffffe + x11) - x27);
+ out[4] = ((0x3fffffe + x13) - x29);
+ out[5] = ((0x1fffffe + x15) - x31);
+ out[6] = ((0x3fffffe + x17) - x33);
+ out[7] = ((0x3fffffe + x19) - x35);
+ out[8] = ((0x1fffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..62dfb1f8a
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x1fffffe + x18) - x34), ((0x3fffffe + x19) - x35), ((0x3fffffe + x17) - x33), ((0x1fffffe + x15) - x31), ((0x3fffffe + x13) - x29), ((0x3fffffe + x11) - x27), ((0x1fffffe + x9) - x25), ((0x3fffffe + x7) - x23), ((Const 67108630 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117_9limbs/freeze.c b/src/Specific/solinas32_2e222m117_9limbs/freeze.c
new file mode 100644
index 000000000..d4b200108
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554315);
+ { 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 x4, 0x1ffffff);
+ { 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 x6, 0xffffff);
+ { 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 x8, 0x1ffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1ffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0xffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1ffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0xffffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & Const 33554315);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x1ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0xffffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x1ffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x1ffffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0xffffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x1ffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x1ffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0xffffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..99ec21a8f
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, Const 33554315);
+ 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 x4, 0x1ffffff);
+ 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 x6, 0xffffff);
+ 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 x8, 0x1ffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1ffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0xffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1ffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0xffffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & Const 33554315);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x1ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0xffffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x1ffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x1ffffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0xffffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x1ffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x1ffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0xffffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_10limbs/feadd.c b/src/Specific/solinas32_2e226m5_10limbs/feadd.c
new file mode 100644
index 000000000..57dd4e1af
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.log b/src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..8a4c51148
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_10limbs/femul.c b/src/Specific/solinas32_2e226m5_10limbs/femul.c
new file mode 100644
index 000000000..eba25c56e
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/femul.c
@@ -0,0 +1,78 @@
+static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ { uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x5 * (0x2 * ((uint64_t)x20 * x38))));
+ { uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x5 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ { uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x5 * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
+ { uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x5 * ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x5 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
+ { uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x38)) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (0x2 * ((uint64_t)x20 * x31)))))))));
+ { uint64_t x47 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (0x5 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
+ { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x5 * ((0x2 * ((uint64_t)x9 * x38)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + (0x2 * ((uint64_t)x20 * x27)))))))))));
+ { uint64_t x49 = (((uint64_t)x5 * x23) + (0x5 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ { uint64_t x50 = (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x50 + x48);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x53 + x47);
+ { uint32_t x56 = (uint32_t) (x55 >> 0x16);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ { uint64_t x58 = (x56 + x46);
+ { uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ { uint64_t x61 = (x59 + x45);
+ { uint32_t x62 = (uint32_t) (x61 >> 0x16);
+ { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
+ { uint64_t x64 = (x62 + x44);
+ { uint32_t x65 = (uint32_t) (x64 >> 0x17);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ { uint64_t x67 = (x65 + x43);
+ { uint32_t x68 = (uint32_t) (x67 >> 0x17);
+ { uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ { uint64_t x70 = (x68 + x42);
+ { uint32_t x71 = (uint32_t) (x70 >> 0x16);
+ { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
+ { uint64_t x73 = (x71 + x41);
+ { uint32_t x74 = (uint32_t) (x73 >> 0x17);
+ { uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
+ { uint64_t x76 = (x74 + x40);
+ { uint32_t x77 = (uint32_t) (x76 >> 0x16);
+ { uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
+ { uint64_t x79 = (x51 + ((uint64_t)0x5 * x77));
+ { uint32_t x80 = (uint32_t) (x79 >> 0x17);
+ { uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
+ { uint32_t x82 = (x80 + x54);
+ { uint32_t x83 = (x82 >> 0x17);
+ { uint32_t x84 = (x82 & 0x7fffff);
+ out[0] = x81;
+ out[1] = x84;
+ out[2] = (x83 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_10limbs/femulDisplay.log b/src/Specific/solinas32_2e226m5_10limbs/femulDisplay.log
new file mode 100644
index 000000000..ad4235c49
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/femulDisplay.log
@@ -0,0 +1,52 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
+ uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x5 * (0x2 * ((uint64_t)x20 * x38))));
+ uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x5 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x5 * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
+ uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x5 * ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))));
+ uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x5 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
+ uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x38)) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (0x2 * ((uint64_t)x20 * x31)))))))));
+ uint64_t x47 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (0x5 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
+ uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x5 * ((0x2 * ((uint64_t)x9 * x38)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + (0x2 * ((uint64_t)x20 * x27)))))))))));
+ uint64_t x49 = (((uint64_t)x5 * x23) + (0x5 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ uint64_t x50 = (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x50 + x48);
+ uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x53 + x47);
+ uint32_t x56 = (uint32_t) (x55 >> 0x16);
+ uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ uint64_t x58 = (x56 + x46);
+ uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ uint64_t x61 = (x59 + x45);
+ uint32_t x62 = (uint32_t) (x61 >> 0x16);
+ uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
+ uint64_t x64 = (x62 + x44);
+ uint32_t x65 = (uint32_t) (x64 >> 0x17);
+ uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ uint64_t x67 = (x65 + x43);
+ uint32_t x68 = (uint32_t) (x67 >> 0x17);
+ uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ uint64_t x70 = (x68 + x42);
+ uint32_t x71 = (uint32_t) (x70 >> 0x16);
+ uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
+ uint64_t x73 = (x71 + x41);
+ uint32_t x74 = (uint32_t) (x73 >> 0x17);
+ uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
+ uint64_t x76 = (x74 + x40);
+ uint32_t x77 = (uint32_t) (x76 >> 0x16);
+ uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
+ uint64_t x79 = (x51 + ((uint64_t)0x5 * x77));
+ uint32_t x80 = (uint32_t) (x79 >> 0x17);
+ uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
+ uint32_t x82 = (x80 + x54);
+ uint32_t x83 = (x82 >> 0x17);
+ uint32_t x84 = (x82 & 0x7fffff);
+ return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesquare.c b/src/Specific/solinas32_2e226m5_10limbs/fesquare.c
new file mode 100644
index 000000000..3c4af1c29
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesquare.c
@@ -0,0 +1,68 @@
+static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x5 * (0x2 * ((uint64_t)x17 * x17))));
+ { uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x5 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ { uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x5 * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
+ { uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x17)) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (0x2 * ((uint64_t)x17 * x10)))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x17)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (0x2 * ((uint64_t)x17 * x6)))))))))));
+ { uint64_t x28 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ { uint64_t x29 = (x28 >> 0x17);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ { uint64_t x31 = (x29 + x27);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x26);
+ { uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ { uint64_t x37 = (x35 + x25);
+ { uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x24);
+ { uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ { uint64_t x43 = (x41 + x23);
+ { uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x22);
+ { uint32_t x47 = (uint32_t) (x46 >> 0x17);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ { uint64_t x49 = (x47 + x21);
+ { uint32_t x50 = (uint32_t) (x49 >> 0x16);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
+ { uint64_t x52 = (x50 + x20);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x53 + x19);
+ { uint32_t x56 = (uint32_t) (x55 >> 0x16);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ { uint64_t x58 = (x30 + ((uint64_t)0x5 * x56));
+ { uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ { uint32_t x61 = (x59 + x33);
+ { uint32_t x62 = (x61 >> 0x17);
+ { uint32_t x63 = (x61 & 0x7fffff);
+ out[0] = x60;
+ out[1] = x63;
+ out[2] = (x62 + x36);
+ out[3] = x39;
+ out[4] = x42;
+ out[5] = x45;
+ out[6] = x48;
+ out[7] = x51;
+ out[8] = x54;
+ out[9] = x57;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.log b/src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..b04e3499c
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.log
@@ -0,0 +1,52 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
+ uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x5 * (0x2 * ((uint64_t)x17 * x17))));
+ uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x5 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x5 * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
+ uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))));
+ uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
+ uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x17)) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (0x2 * ((uint64_t)x17 * x10)))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
+ uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x17)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (0x2 * ((uint64_t)x17 * x6)))))))))));
+ uint64_t x28 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ uint64_t x29 = (x28 >> 0x17);
+ uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
+ uint64_t x31 = (x29 + x27);
+ uint32_t x32 = (uint32_t) (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x26);
+ uint32_t x35 = (uint32_t) (x34 >> 0x16);
+ uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
+ uint64_t x37 = (x35 + x25);
+ uint32_t x38 = (uint32_t) (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x24);
+ uint32_t x41 = (uint32_t) (x40 >> 0x16);
+ uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
+ uint64_t x43 = (x41 + x23);
+ uint32_t x44 = (uint32_t) (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x22);
+ uint32_t x47 = (uint32_t) (x46 >> 0x17);
+ uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ uint64_t x49 = (x47 + x21);
+ uint32_t x50 = (uint32_t) (x49 >> 0x16);
+ uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
+ uint64_t x52 = (x50 + x20);
+ uint32_t x53 = (uint32_t) (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x53 + x19);
+ uint32_t x56 = (uint32_t) (x55 >> 0x16);
+ uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ uint64_t x58 = (x30 + ((uint64_t)0x5 * x56));
+ uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ uint32_t x61 = (x59 + x33);
+ uint32_t x62 = (x61 >> 0x17);
+ uint32_t x63 = (x61 & 0x7fffff);
+ return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesub.c b/src/Specific/solinas32_2e226m5_10limbs/fesub.c
new file mode 100644
index 000000000..c04945cc5
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = ((Const 16777206 + x5) - x23);
+ out[1] = ((0xfffffe + x7) - x25);
+ out[2] = ((0x7ffffe + x9) - x27);
+ out[3] = ((0xfffffe + x11) - x29);
+ out[4] = ((0x7ffffe + x13) - x31);
+ out[5] = ((0xfffffe + x15) - x33);
+ out[6] = ((0xfffffe + x17) - x35);
+ out[7] = ((0x7ffffe + x19) - x37);
+ out[8] = ((0xfffffe + x21) - x39);
+ out[9] = ((0x7ffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.log b/src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..60ceebcec
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x7ffffe + x20) - x38), ((0xfffffe + x21) - x39), ((0x7ffffe + x19) - x37), ((0xfffffe + x17) - x35), ((0xfffffe + x15) - x33), ((0x7ffffe + x13) - x31), ((0xfffffe + x11) - x29), ((0x7ffffe + x9) - x27), ((0xfffffe + x7) - x25), ((Const 16777206 + x5) - x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_10limbs/freeze.c b/src/Specific/solinas32_2e226m5_10limbs/freeze.c
new file mode 100644
index 000000000..08994ed49
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388603);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7fffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7fffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7fffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffff);
+ { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ { uint32_t x50 = (x49 & Const 8388603);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint32_t x54 = (x49 & 0x7fffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint32_t x58 = (x49 & 0x3fffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint32_t x62 = (x49 & 0x7fffff);
+ { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint32_t x66 = (x49 & 0x3fffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint32_t x70 = (x49 & 0x7fffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint32_t x74 = (x49 & 0x7fffff);
+ { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint32_t x78 = (x49 & 0x3fffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint32_t x82 = (x49 & 0x7fffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint32_t x86 = (x49 & 0x3fffff);
+ { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.log b/src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..709fcb463
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388603);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7fffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7fffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7fffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffff);
+ uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ uint32_t x50 = (x49 & Const 8388603);
+ uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint32_t x54 = (x49 & 0x7fffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint32_t x58 = (x49 & 0x3fffff);
+ uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint32_t x62 = (x49 & 0x7fffff);
+ uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint32_t x66 = (x49 & 0x3fffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint32_t x70 = (x49 & 0x7fffff);
+ uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint32_t x74 = (x49 & 0x7fffff);
+ uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint32_t x78 = (x49 & 0x3fffff);
+ uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint32_t x82 = (x49 & 0x7fffff);
+ uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint32_t x86 = (x49 & 0x3fffff);
+ uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_9limbs/feadd.c b/src/Specific/solinas32_2e226m5_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_9limbs/femul.c b/src/Specific/solinas32_2e226m5_9limbs/femul.c
new file mode 100644
index 000000000..f023c4b4b
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x5 * ((uint64_t)x18 * x34)));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x5 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x5 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((uint64_t)x13 * x21))))) + (0x5 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x5 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x5 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x5 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x5 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x1a);
+ { uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x19);
+ { uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x19);
+ { uint32_t x52 = ((uint32_t)x50 & 0x1ffffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint64_t x54 = (x53 >> 0x19);
+ { uint32_t x55 = ((uint32_t)x53 & 0x1ffffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint64_t x57 = (x56 >> 0x19);
+ { uint32_t x58 = ((uint32_t)x56 & 0x1ffffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint64_t x60 = (x59 >> 0x19);
+ { uint32_t x61 = ((uint32_t)x59 & 0x1ffffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint64_t x63 = (x62 >> 0x19);
+ { uint32_t x64 = ((uint32_t)x62 & 0x1ffffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint64_t x66 = (x65 >> 0x19);
+ { uint32_t x67 = ((uint32_t)x65 & 0x1ffffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint64_t x69 = (x68 >> 0x19);
+ { uint32_t x70 = ((uint32_t)x68 & 0x1ffffff);
+ { uint64_t x71 = (x46 + (0x5 * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x1a);
+ { uint32_t x73 = ((uint32_t)x71 & 0x3ffffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x19);
+ { uint32_t x76 = (x74 & 0x1ffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_9limbs/femulDisplay.log b/src/Specific/solinas32_2e226m5_9limbs/femulDisplay.log
new file mode 100644
index 000000000..e9f4ba5de
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x5 * ((uint64_t)x18 * x34)));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x5 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x5 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((uint64_t)x13 * x21))))) + (0x5 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x5 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x5 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x5 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x5 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x1a);
+ uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x19);
+ uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x19);
+ uint32_t x52 = ((uint32_t)x50 & 0x1ffffff);
+ uint64_t x53 = (x51 + x41);
+ uint64_t x54 = (x53 >> 0x19);
+ uint32_t x55 = ((uint32_t)x53 & 0x1ffffff);
+ uint64_t x56 = (x54 + x40);
+ uint64_t x57 = (x56 >> 0x19);
+ uint32_t x58 = ((uint32_t)x56 & 0x1ffffff);
+ uint64_t x59 = (x57 + x39);
+ uint64_t x60 = (x59 >> 0x19);
+ uint32_t x61 = ((uint32_t)x59 & 0x1ffffff);
+ uint64_t x62 = (x60 + x38);
+ uint64_t x63 = (x62 >> 0x19);
+ uint32_t x64 = ((uint32_t)x62 & 0x1ffffff);
+ uint64_t x65 = (x63 + x37);
+ uint64_t x66 = (x65 >> 0x19);
+ uint32_t x67 = ((uint32_t)x65 & 0x1ffffff);
+ uint64_t x68 = (x66 + x36);
+ uint64_t x69 = (x68 >> 0x19);
+ uint32_t x70 = ((uint32_t)x68 & 0x1ffffff);
+ uint64_t x71 = (x46 + (0x5 * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x1a);
+ uint32_t x73 = ((uint32_t)x71 & 0x3ffffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x19);
+ uint32_t x76 = (x74 & 0x1ffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesquare.c b/src/Specific/solinas32_2e226m5_9limbs/fesquare.c
new file mode 100644
index 000000000..91eb73d03
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x5 * ((uint64_t)x15 * x15)));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x1a);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint64_t x35 = (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint64_t x50 = (x49 >> 0x19);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ { uint64_t x52 = (x27 + (0x5 * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x1a);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x19);
+ { uint32_t x57 = (x55 & 0x1ffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..507ed9466
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x5 * ((uint64_t)x15 * x15)));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x1a);
+ uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x32 + x22);
+ uint64_t x35 = (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x20);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x19);
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x44 + x18);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x17);
+ uint64_t x50 = (x49 >> 0x19);
+ uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ uint64_t x52 = (x27 + (0x5 * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x1a);
+ uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x19);
+ uint32_t x57 = (x55 & 0x1ffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesub.c b/src/Specific/solinas32_2e226m5_9limbs/fesub.c
new file mode 100644
index 000000000..73238f0b1
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((0x7fffff6 + x5) - x21);
+ out[1] = ((0x3fffffe + x7) - x23);
+ out[2] = ((0x3fffffe + x9) - x25);
+ out[3] = ((0x3fffffe + x11) - x27);
+ out[4] = ((0x3fffffe + x13) - x29);
+ out[5] = ((0x3fffffe + x15) - x31);
+ out[6] = ((0x3fffffe + x17) - x33);
+ out[7] = ((0x3fffffe + x19) - x35);
+ out[8] = ((0x3fffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..dde4f2fe7
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x3fffffe + x18) - x34), ((0x3fffffe + x19) - x35), ((0x3fffffe + x17) - x33), ((0x3fffffe + x15) - x31), ((0x3fffffe + x13) - x29), ((0x3fffffe + x11) - x27), ((0x3fffffe + x9) - x25), ((0x3fffffe + x7) - x23), ((0x7fffff6 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5_9limbs/freeze.c b/src/Specific/solinas32_2e226m5_9limbs/freeze.c
new file mode 100644
index 000000000..7637cfeb2
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffb);
+ { 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 x4, 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 x6, 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 x8, 0x1ffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1ffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x1ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1ffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1ffffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & 0x3fffffb);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x1ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x1ffffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x1ffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x1ffffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x1ffffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x1ffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x1ffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x1ffffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..aaf536664
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, 0x3fffffb);
+ 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 x4, 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 x6, 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 x8, 0x1ffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1ffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x1ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1ffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x1ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1ffffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & 0x3fffffb);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x1ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x1ffffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x1ffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x1ffffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x1ffffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x1ffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x1ffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x1ffffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27_9limbs/feadd.c b/src/Specific/solinas32_2e230m27_9limbs/feadd.c
new file mode 100644
index 000000000..e1188fdec
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.log b/src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..e26bb40f8
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27_9limbs/femul.c b/src/Specific/solinas32_2e230m27_9limbs/femul.c
new file mode 100644
index 000000000..bd7cc2425
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ { uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x1b * (0x2 * ((uint64_t)x18 * x34))));
+ { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x1b * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x1b * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x1b * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x1b * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x1b * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x1b * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ { uint64_t x44 = (((uint64_t)x5 * x21) + (0x1b * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ { uint64_t x45 = (x44 >> 0x1a);
+ { uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
+ { uint64_t x47 = (x45 + x43);
+ { uint64_t x48 = (x47 >> 0x1a);
+ { uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
+ { uint64_t x50 = (x48 + x42);
+ { uint64_t x51 = (x50 >> 0x19);
+ { uint32_t x52 = ((uint32_t)x50 & 0x1ffffff);
+ { uint64_t x53 = (x51 + x41);
+ { uint64_t x54 = (x53 >> 0x1a);
+ { uint32_t x55 = ((uint32_t)x53 & 0x3ffffff);
+ { uint64_t x56 = (x54 + x40);
+ { uint64_t x57 = (x56 >> 0x19);
+ { uint32_t x58 = ((uint32_t)x56 & 0x1ffffff);
+ { uint64_t x59 = (x57 + x39);
+ { uint64_t x60 = (x59 >> 0x1a);
+ { uint32_t x61 = ((uint32_t)x59 & 0x3ffffff);
+ { uint64_t x62 = (x60 + x38);
+ { uint64_t x63 = (x62 >> 0x19);
+ { uint32_t x64 = ((uint32_t)x62 & 0x1ffffff);
+ { uint64_t x65 = (x63 + x37);
+ { uint64_t x66 = (x65 >> 0x1a);
+ { uint32_t x67 = ((uint32_t)x65 & 0x3ffffff);
+ { uint64_t x68 = (x66 + x36);
+ { uint64_t x69 = (x68 >> 0x19);
+ { uint32_t x70 = ((uint32_t)x68 & 0x1ffffff);
+ { uint64_t x71 = (x46 + (0x1b * x69));
+ { uint32_t x72 = (uint32_t) (x71 >> 0x1a);
+ { uint32_t x73 = ((uint32_t)x71 & 0x3ffffff);
+ { uint32_t x74 = (x72 + x49);
+ { uint32_t x75 = (x74 >> 0x1a);
+ { uint32_t x76 = (x74 & 0x3ffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e230m27_9limbs/femulDisplay.log b/src/Specific/solinas32_2e230m27_9limbs/femulDisplay.log
new file mode 100644
index 000000000..9d383a1a5
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
+ uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0x1b * (0x2 * ((uint64_t)x18 * x34))));
+ uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x1b * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
+ uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x1b * ((0x2 * ((uint64_t)x17 * x34)) + (((uint64_t)x19 * x35) + (0x2 * ((uint64_t)x18 * x33))))));
+ uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((0x2 * ((uint64_t)x9 * x25)) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x1b * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
+ uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x1b * ((0x2 * ((uint64_t)x13 * x34)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + (0x2 * ((uint64_t)x18 * x29))))))));
+ uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x1b * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
+ uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x1b * ((0x2 * ((uint64_t)x9 * x34)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + (((uint64_t)x19 * x27) + (0x2 * ((uint64_t)x18 * x25))))))))));
+ uint64_t x44 = (((uint64_t)x5 * x21) + (0x1b * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
+ uint64_t x45 = (x44 >> 0x1a);
+ uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
+ uint64_t x47 = (x45 + x43);
+ uint64_t x48 = (x47 >> 0x1a);
+ uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
+ uint64_t x50 = (x48 + x42);
+ uint64_t x51 = (x50 >> 0x19);
+ uint32_t x52 = ((uint32_t)x50 & 0x1ffffff);
+ uint64_t x53 = (x51 + x41);
+ uint64_t x54 = (x53 >> 0x1a);
+ uint32_t x55 = ((uint32_t)x53 & 0x3ffffff);
+ uint64_t x56 = (x54 + x40);
+ uint64_t x57 = (x56 >> 0x19);
+ uint32_t x58 = ((uint32_t)x56 & 0x1ffffff);
+ uint64_t x59 = (x57 + x39);
+ uint64_t x60 = (x59 >> 0x1a);
+ uint32_t x61 = ((uint32_t)x59 & 0x3ffffff);
+ uint64_t x62 = (x60 + x38);
+ uint64_t x63 = (x62 >> 0x19);
+ uint32_t x64 = ((uint32_t)x62 & 0x1ffffff);
+ uint64_t x65 = (x63 + x37);
+ uint64_t x66 = (x65 >> 0x1a);
+ uint32_t x67 = ((uint32_t)x65 & 0x3ffffff);
+ uint64_t x68 = (x66 + x36);
+ uint64_t x69 = (x68 >> 0x19);
+ uint32_t x70 = ((uint32_t)x68 & 0x1ffffff);
+ uint64_t x71 = (x46 + (0x1b * x69));
+ uint32_t x72 = (uint32_t) (x71 >> 0x1a);
+ uint32_t x73 = ((uint32_t)x71 & 0x3ffffff);
+ uint32_t x74 = (x72 + x49);
+ uint32_t x75 = (x74 >> 0x1a);
+ uint32_t x76 = (x74 & 0x3ffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesquare.c b/src/Specific/solinas32_2e230m27_9limbs/fesquare.c
new file mode 100644
index 000000000..fbdfc90de
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1b * (0x2 * ((uint64_t)x15 * x15))));
+ { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x1b * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x1b * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1b * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ { uint64_t x25 = (((uint64_t)x2 * x2) + (0x1b * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ { uint64_t x26 = (x25 >> 0x1a);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ { uint64_t x28 = (x26 + x24);
+ { uint64_t x29 = (x28 >> 0x1a);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ { uint64_t x31 = (x29 + x23);
+ { uint64_t x32 = (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x32 + x22);
+ { uint64_t x35 = (x34 >> 0x1a);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x20);
+ { uint64_t x41 = (x40 >> 0x1a);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ { uint64_t x43 = (x41 + x19);
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x44 + x18);
+ { uint64_t x47 = (x46 >> 0x1a);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ { uint64_t x49 = (x47 + x17);
+ { uint64_t x50 = (x49 >> 0x19);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ { uint64_t x52 = (x27 + (0x1b * x50));
+ { uint32_t x53 = (uint32_t) (x52 >> 0x1a);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ { uint32_t x55 = (x53 + x30);
+ { uint32_t x56 = (x55 >> 0x1a);
+ { uint32_t x57 = (x55 & 0x3ffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.log b/src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..c03ff40bc
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
+ uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1b * (0x2 * ((uint64_t)x15 * x15))));
+ uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x1b * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
+ uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x1b * ((0x2 * ((uint64_t)x14 * x15)) + (((uint64_t)x16 * x16) + (0x2 * ((uint64_t)x15 * x14))))));
+ uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
+ uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1b * ((0x2 * ((uint64_t)x10 * x15)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (0x2 * ((uint64_t)x15 * x10))))))));
+ uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * ((0x2 * ((uint64_t)x6 * x15)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (0x2 * ((uint64_t)x15 * x6))))))))));
+ uint64_t x25 = (((uint64_t)x2 * x2) + (0x1b * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
+ uint64_t x26 = (x25 >> 0x1a);
+ uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ uint64_t x28 = (x26 + x24);
+ uint64_t x29 = (x28 >> 0x1a);
+ uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ uint64_t x31 = (x29 + x23);
+ uint64_t x32 = (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x32 + x22);
+ uint64_t x35 = (x34 >> 0x1a);
+ uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x20);
+ uint64_t x41 = (x40 >> 0x1a);
+ uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ uint64_t x43 = (x41 + x19);
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x44 + x18);
+ uint64_t x47 = (x46 >> 0x1a);
+ uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ uint64_t x49 = (x47 + x17);
+ uint64_t x50 = (x49 >> 0x19);
+ uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ uint64_t x52 = (x27 + (0x1b * x50));
+ uint32_t x53 = (uint32_t) (x52 >> 0x1a);
+ uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ uint32_t x55 = (x53 + x30);
+ uint32_t x56 = (x55 >> 0x1a);
+ uint32_t x57 = (x55 & 0x3ffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesub.c b/src/Specific/solinas32_2e230m27_9limbs/fesub.c
new file mode 100644
index 000000000..33240f797
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x34 = in2[8];
+ { const uint32_t x35 = in2[7];
+ { const uint32_t x33 = in2[6];
+ { const uint32_t x31 = in2[5];
+ { const uint32_t x29 = in2[4];
+ { const uint32_t x27 = in2[3];
+ { const uint32_t x25 = in2[2];
+ { const uint32_t x23 = in2[1];
+ { const uint32_t x21 = in2[0];
+ out[0] = ((Const 134217674 + x5) - x21);
+ out[1] = ((0x7fffffe + x7) - x23);
+ out[2] = ((0x3fffffe + x9) - x25);
+ out[3] = ((0x7fffffe + x11) - x27);
+ out[4] = ((0x3fffffe + x13) - x29);
+ out[5] = ((0x7fffffe + x15) - x31);
+ out[6] = ((0x3fffffe + x17) - x33);
+ out[7] = ((0x7fffffe + x19) - x35);
+ out[8] = ((0x3fffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.log b/src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..350e4977c
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x3fffffe + x18) - x34), ((0x7fffffe + x19) - x35), ((0x3fffffe + x17) - x33), ((0x7fffffe + x15) - x31), ((0x3fffffe + x13) - x29), ((0x7fffffe + x11) - x27), ((0x3fffffe + x9) - x25), ((0x7fffffe + x7) - x23), ((Const 134217674 + x5) - x21)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27_9limbs/freeze.c b/src/Specific/solinas32_2e230m27_9limbs/freeze.c
new file mode 100644
index 000000000..fcfc81da4
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint32_t out[9], const uint32_t in1[9]) {
+ { const uint32_t x15 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 67108837);
+ { 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 x4, 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 x6, 0x1ffffff);
+ { 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 x8, 0x3ffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1ffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1ffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1ffffff);
+ { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ { uint32_t x45 = (x44 & Const 67108837);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint32_t x49 = (x44 & 0x3ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint32_t x53 = (x44 & 0x1ffffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint32_t x57 = (x44 & 0x3ffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint32_t x61 = (x44 & 0x1ffffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint32_t x65 = (x44 & 0x3ffffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint32_t x69 = (x44 & 0x1ffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint32_t x73 = (x44 & 0x3ffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint32_t x77 = (x44 & 0x1ffffff);
+ { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.log b/src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..b663fdb69
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, Const 67108837);
+ 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 x4, 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 x6, 0x1ffffff);
+ 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 x8, 0x3ffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x1ffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1ffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x1ffffff);
+ uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
+ uint32_t x45 = (x44 & Const 67108837);
+ uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint32_t x49 = (x44 & 0x3ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint32_t x53 = (x44 & 0x1ffffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint32_t x57 = (x44 & 0x3ffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint32_t x61 = (x44 & 0x1ffffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint32_t x65 = (x44 & 0x3ffffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint32_t x69 = (x44 & 0x1ffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint32_t x73 = (x44 & 0x3ffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint32_t x77 = (x44 & 0x1ffffff);
+ uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15_10limbs/feadd.c b/src/Specific/solinas32_2e235m15_10limbs/feadd.c
new file mode 100644
index 000000000..57dd4e1af
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.log b/src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..8a4c51148
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15_10limbs/femul.c b/src/Specific/solinas32_2e235m15_10limbs/femul.c
new file mode 100644
index 000000000..bc32c90fa
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/femul.c
@@ -0,0 +1,78 @@
+static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ { uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0xf * (0x2 * ((uint64_t)x20 * x38))));
+ { uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0xf * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ { uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0xf * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
+ { uint64_t x44 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((uint64_t)x15 * x23)))))) + (0xf * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0xf * ((0x2 * ((uint64_t)x15 * x38)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (0x2 * ((uint64_t)x20 * x33))))))));
+ { uint64_t x46 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)))) + (0xf * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
+ { uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0xf * ((0x2 * ((uint64_t)x11 * x38)) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (0x2 * ((uint64_t)x20 * x29))))))))));
+ { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0xf * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
+ { uint64_t x49 = (((uint64_t)x5 * x23) + (0xf * ((0x2 * ((uint64_t)x7 * x38)) + (((uint64_t)x9 * x39) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + (((uint64_t)x21 * x27) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x48);
+ { uint64_t x53 = (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x53 + x47);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x56 + x46);
+ { uint64_t x59 = (x58 >> 0x17);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ { uint64_t x61 = (x59 + x45);
+ { uint64_t x62 = (x61 >> 0x18);
+ { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ { uint64_t x64 = (x62 + x44);
+ { uint64_t x65 = (x64 >> 0x17);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ { uint64_t x67 = (x65 + x43);
+ { uint64_t x68 = (x67 >> 0x18);
+ { uint32_t x69 = ((uint32_t)x67 & 0xffffff);
+ { uint64_t x70 = (x68 + x42);
+ { uint64_t x71 = (x70 >> 0x17);
+ { uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
+ { uint64_t x73 = (x71 + x41);
+ { uint32_t x74 = (uint32_t) (x73 >> 0x18);
+ { uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ { uint64_t x76 = (x74 + x40);
+ { uint32_t x77 = (uint32_t) (x76 >> 0x17);
+ { uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
+ { uint64_t x79 = (x51 + ((uint64_t)0xf * x77));
+ { uint32_t x80 = (uint32_t) (x79 >> 0x18);
+ { uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ { uint32_t x82 = (x80 + x54);
+ { uint32_t x83 = (x82 >> 0x17);
+ { uint32_t x84 = (x82 & 0x7fffff);
+ out[0] = x81;
+ out[1] = x84;
+ out[2] = (x83 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e235m15_10limbs/femulDisplay.log b/src/Specific/solinas32_2e235m15_10limbs/femulDisplay.log
new file mode 100644
index 000000000..2b1410eb1
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/femulDisplay.log
@@ -0,0 +1,52 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
+ uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0xf * (0x2 * ((uint64_t)x20 * x38))));
+ uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0xf * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0xf * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
+ uint64_t x44 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((uint64_t)x15 * x23)))))) + (0xf * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
+ uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0xf * ((0x2 * ((uint64_t)x15 * x38)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (0x2 * ((uint64_t)x20 * x33))))))));
+ uint64_t x46 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)))) + (0xf * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
+ uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0xf * ((0x2 * ((uint64_t)x11 * x38)) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (0x2 * ((uint64_t)x20 * x29))))))))));
+ uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0xf * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
+ uint64_t x49 = (((uint64_t)x5 * x23) + (0xf * ((0x2 * ((uint64_t)x7 * x38)) + (((uint64_t)x9 * x39) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + (((uint64_t)x21 * x27) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x48);
+ uint64_t x53 = (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x53 + x47);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x56 + x46);
+ uint64_t x59 = (x58 >> 0x17);
+ uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ uint64_t x61 = (x59 + x45);
+ uint64_t x62 = (x61 >> 0x18);
+ uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ uint64_t x64 = (x62 + x44);
+ uint64_t x65 = (x64 >> 0x17);
+ uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ uint64_t x67 = (x65 + x43);
+ uint64_t x68 = (x67 >> 0x18);
+ uint32_t x69 = ((uint32_t)x67 & 0xffffff);
+ uint64_t x70 = (x68 + x42);
+ uint64_t x71 = (x70 >> 0x17);
+ uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
+ uint64_t x73 = (x71 + x41);
+ uint32_t x74 = (uint32_t) (x73 >> 0x18);
+ uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ uint64_t x76 = (x74 + x40);
+ uint32_t x77 = (uint32_t) (x76 >> 0x17);
+ uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
+ uint64_t x79 = (x51 + ((uint64_t)0xf * x77));
+ uint32_t x80 = (uint32_t) (x79 >> 0x18);
+ uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ uint32_t x82 = (x80 + x54);
+ uint32_t x83 = (x82 >> 0x17);
+ uint32_t x84 = (x82 & 0x7fffff);
+ return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesquare.c b/src/Specific/solinas32_2e235m15_10limbs/fesquare.c
new file mode 100644
index 000000000..efe9f697f
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesquare.c
@@ -0,0 +1,68 @@
+static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0xf * (0x2 * ((uint64_t)x17 * x17))));
+ { uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xf * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ { uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * ((0x2 * ((uint64_t)x12 * x17)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (0x2 * ((uint64_t)x17 * x12))))))));
+ { uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * ((0x2 * ((uint64_t)x8 * x17)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (0x2 * ((uint64_t)x17 * x8))))))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
+ { uint64_t x28 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x17)) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ { uint64_t x29 = (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x27);
+ { uint64_t x32 = (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x26);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x25);
+ { uint64_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x24);
+ { uint64_t x41 = (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x23);
+ { uint64_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x22);
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x21);
+ { uint64_t x50 = (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x50 + x20);
+ { uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x19);
+ { uint32_t x56 = (uint32_t) (x55 >> 0x17);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ { uint64_t x58 = (x30 + ((uint64_t)0xf * x56));
+ { uint32_t x59 = (uint32_t) (x58 >> 0x18);
+ { uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ { uint32_t x61 = (x59 + x33);
+ { uint32_t x62 = (x61 >> 0x17);
+ { uint32_t x63 = (x61 & 0x7fffff);
+ out[0] = x60;
+ out[1] = x63;
+ out[2] = (x62 + x36);
+ out[3] = x39;
+ out[4] = x42;
+ out[5] = x45;
+ out[6] = x48;
+ out[7] = x51;
+ out[8] = x54;
+ out[9] = x57;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.log b/src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..34be938a1
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.log
@@ -0,0 +1,52 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
+ uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0xf * (0x2 * ((uint64_t)x17 * x17))));
+ uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xf * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
+ uint64_t x23 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
+ uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * ((0x2 * ((uint64_t)x12 * x17)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (0x2 * ((uint64_t)x17 * x12))))))));
+ uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * ((0x2 * ((uint64_t)x8 * x17)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (0x2 * ((uint64_t)x17 * x8))))))))));
+ uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
+ uint64_t x28 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x17)) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ uint64_t x29 = (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x27);
+ uint64_t x32 = (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x26);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x25);
+ uint64_t x38 = (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x24);
+ uint64_t x41 = (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x23);
+ uint64_t x44 = (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x22);
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x21);
+ uint64_t x50 = (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x50 + x20);
+ uint32_t x53 = (uint32_t) (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x19);
+ uint32_t x56 = (uint32_t) (x55 >> 0x17);
+ uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ uint64_t x58 = (x30 + ((uint64_t)0xf * x56));
+ uint32_t x59 = (uint32_t) (x58 >> 0x18);
+ uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ uint32_t x61 = (x59 + x33);
+ uint32_t x62 = (x61 >> 0x17);
+ uint32_t x63 = (x61 & 0x7fffff);
+ return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesub.c b/src/Specific/solinas32_2e235m15_10limbs/fesub.c
new file mode 100644
index 000000000..968c0143d
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = ((Const 33554402 + x5) - x23);
+ out[1] = ((0xfffffe + x7) - x25);
+ out[2] = ((0x1fffffe + x9) - x27);
+ out[3] = ((0xfffffe + x11) - x29);
+ out[4] = ((0x1fffffe + x13) - x31);
+ out[5] = ((0xfffffe + x15) - x33);
+ out[6] = ((0x1fffffe + x17) - x35);
+ out[7] = ((0xfffffe + x19) - x37);
+ out[8] = ((0x1fffffe + x21) - x39);
+ out[9] = ((0xfffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.log b/src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..6e73b934b
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0xfffffe + x20) - x38), ((0x1fffffe + x21) - x39), ((0xfffffe + x19) - x37), ((0x1fffffe + x17) - x35), ((0xfffffe + x15) - x33), ((0x1fffffe + x13) - x31), ((0xfffffe + x11) - x29), ((0x1fffffe + x9) - x27), ((0xfffffe + x7) - x25), ((Const 33554402 + x5) - x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15_10limbs/freeze.c b/src/Specific/solinas32_2e235m15_10limbs/freeze.c
new file mode 100644
index 000000000..ebac57b65
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffff1);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7fffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0xffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7fffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0xffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x7fffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0xffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x7fffff);
+ { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ { uint32_t x50 = (x49 & 0xfffff1);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint32_t x54 = (x49 & 0x7fffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint32_t x58 = (x49 & 0xffffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint32_t x62 = (x49 & 0x7fffff);
+ { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint32_t x66 = (x49 & 0xffffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint32_t x70 = (x49 & 0x7fffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint32_t x74 = (x49 & 0xffffff);
+ { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint32_t x78 = (x49 & 0x7fffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint32_t x82 = (x49 & 0xffffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint32_t x86 = (x49 & 0x7fffff);
+ { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.log b/src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..6b9a2b829
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffff1);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7fffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0xffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7fffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0xffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x7fffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0xffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x7fffff);
+ uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ uint32_t x50 = (x49 & 0xfffff1);
+ uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint32_t x54 = (x49 & 0x7fffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint32_t x58 = (x49 & 0xffffff);
+ uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint32_t x62 = (x49 & 0x7fffff);
+ uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint32_t x66 = (x49 & 0xffffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint32_t x70 = (x49 & 0x7fffff);
+ uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint32_t x74 = (x49 & 0xffffff);
+ uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint32_t x78 = (x49 & 0x7fffff);
+ uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint32_t x82 = (x49 & 0xffffff);
+ uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint32_t x86 = (x49 & 0x7fffff);
+ uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9_10limbs/feadd.c b/src/Specific/solinas32_2e243m9_10limbs/feadd.c
new file mode 100644
index 000000000..57dd4e1af
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.log b/src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..8a4c51148
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9_10limbs/femul.c b/src/Specific/solinas32_2e243m9_10limbs/femul.c
new file mode 100644
index 000000000..4e070ca73
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/femul.c
@@ -0,0 +1,78 @@
+static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ { uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x9 * ((uint64_t)x20 * x38)));
+ { uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x9 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ { uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x38)) + ((0x2 * ((uint64_t)x21 * x39)) + (0x2 * ((uint64_t)x20 * x37))))));
+ { uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x9 * (((uint64_t)x17 * x38) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x20 * x35))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x9 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
+ { uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x9 * ((0x2 * ((uint64_t)x13 * x38)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + (0x2 * ((uint64_t)x20 * x31)))))))));
+ { uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x9 * (((uint64_t)x11 * x38) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((uint64_t)x20 * x29)))))))));
+ { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x9 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
+ { uint64_t x49 = (((uint64_t)x5 * x23) + (0x9 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ { uint64_t x50 = (x49 >> 0x19);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ { uint64_t x52 = (x50 + x48);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x47);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x56 + x46);
+ { uint64_t x59 = (x58 >> 0x19);
+ { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ { uint64_t x61 = (x59 + x45);
+ { uint64_t x62 = (x61 >> 0x18);
+ { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ { uint64_t x64 = (x62 + x44);
+ { uint64_t x65 = (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint64_t x67 = (x65 + x43);
+ { uint64_t x68 = (x67 >> 0x19);
+ { uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ { uint64_t x70 = (x68 + x42);
+ { uint64_t x71 = (x70 >> 0x18);
+ { uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ { uint64_t x73 = (x71 + x41);
+ { uint64_t x74 = (x73 >> 0x18);
+ { uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ { uint64_t x76 = (x74 + x40);
+ { uint64_t x77 = (x76 >> 0x18);
+ { uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ { uint64_t x79 = (x51 + (0x9 * x77));
+ { uint32_t x80 = (uint32_t) (x79 >> 0x19);
+ { uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
+ { uint32_t x82 = (x80 + x54);
+ { uint32_t x83 = (x82 >> 0x18);
+ { uint32_t x84 = (x82 & 0xffffff);
+ out[0] = x81;
+ out[1] = x84;
+ out[2] = (x83 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e243m9_10limbs/femulDisplay.log b/src/Specific/solinas32_2e243m9_10limbs/femulDisplay.log
new file mode 100644
index 000000000..a855462d1
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/femulDisplay.log
@@ -0,0 +1,52 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
+ uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x9 * ((uint64_t)x20 * x38)));
+ uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x9 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x38)) + ((0x2 * ((uint64_t)x21 * x39)) + (0x2 * ((uint64_t)x20 * x37))))));
+ uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x9 * (((uint64_t)x17 * x38) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x20 * x35))))));
+ uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x9 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
+ uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x9 * ((0x2 * ((uint64_t)x13 * x38)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + (0x2 * ((uint64_t)x20 * x31)))))))));
+ uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x9 * (((uint64_t)x11 * x38) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((uint64_t)x20 * x29)))))))));
+ uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x9 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
+ uint64_t x49 = (((uint64_t)x5 * x23) + (0x9 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ uint64_t x50 = (x49 >> 0x19);
+ uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ uint64_t x52 = (x50 + x48);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x47);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x56 + x46);
+ uint64_t x59 = (x58 >> 0x19);
+ uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ uint64_t x61 = (x59 + x45);
+ uint64_t x62 = (x61 >> 0x18);
+ uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ uint64_t x64 = (x62 + x44);
+ uint64_t x65 = (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint64_t x67 = (x65 + x43);
+ uint64_t x68 = (x67 >> 0x19);
+ uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ uint64_t x70 = (x68 + x42);
+ uint64_t x71 = (x70 >> 0x18);
+ uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ uint64_t x73 = (x71 + x41);
+ uint64_t x74 = (x73 >> 0x18);
+ uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ uint64_t x76 = (x74 + x40);
+ uint64_t x77 = (x76 >> 0x18);
+ uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ uint64_t x79 = (x51 + (0x9 * x77));
+ uint32_t x80 = (uint32_t) (x79 >> 0x19);
+ uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
+ uint32_t x82 = (x80 + x54);
+ uint32_t x83 = (x82 >> 0x18);
+ uint32_t x84 = (x82 & 0xffffff);
+ return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesquare.c b/src/Specific/solinas32_2e243m9_10limbs/fesquare.c
new file mode 100644
index 000000000..fc8390539
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesquare.c
@@ -0,0 +1,68 @@
+static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((uint64_t)x17 * x17)));
+ { uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ { uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x17)) + ((0x2 * ((uint64_t)x18 * x18)) + (0x2 * ((uint64_t)x17 * x16))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x17) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((uint64_t)x17 * x14))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
+ { uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint64_t)x10 * x17)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + (0x2 * ((uint64_t)x17 * x10)))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x17) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((uint64_t)x17 * x8)))))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
+ { uint64_t x28 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x27);
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x26);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x25);
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x24);
+ { uint64_t x41 = (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x23);
+ { uint64_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x44 + x22);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x21);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x20);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x19);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x30 + (0x9 * x56));
+ { uint32_t x59 = (uint32_t) (x58 >> 0x19);
+ { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ { uint32_t x61 = (x59 + x33);
+ { uint32_t x62 = (x61 >> 0x18);
+ { uint32_t x63 = (x61 & 0xffffff);
+ out[0] = x60;
+ out[1] = x63;
+ out[2] = (x62 + x36);
+ out[3] = x39;
+ out[4] = x42;
+ out[5] = x45;
+ out[6] = x48;
+ out[7] = x51;
+ out[8] = x54;
+ out[9] = x57;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.log b/src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..6f19b0946
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.log
@@ -0,0 +1,52 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
+ uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((uint64_t)x17 * x17)));
+ uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x17)) + ((0x2 * ((uint64_t)x18 * x18)) + (0x2 * ((uint64_t)x17 * x16))))));
+ uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x17) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((uint64_t)x17 * x14))))));
+ uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
+ uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint64_t)x10 * x17)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + (0x2 * ((uint64_t)x17 * x10)))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x17) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((uint64_t)x17 * x8)))))))));
+ uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
+ uint64_t x28 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x27);
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x26);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x25);
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x24);
+ uint64_t x41 = (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x23);
+ uint64_t x44 = (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x44 + x22);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x21);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x20);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x19);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x30 + (0x9 * x56));
+ uint32_t x59 = (uint32_t) (x58 >> 0x19);
+ uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ uint32_t x61 = (x59 + x33);
+ uint32_t x62 = (x61 >> 0x18);
+ uint32_t x63 = (x61 & 0xffffff);
+ return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesub.c b/src/Specific/solinas32_2e243m9_10limbs/fesub.c
new file mode 100644
index 000000000..30eb3c31b
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = ((Const 67108846 + x5) - x23);
+ out[1] = ((0x1fffffe + x7) - x25);
+ out[2] = ((0x1fffffe + x9) - x27);
+ out[3] = ((0x3fffffe + x11) - x29);
+ out[4] = ((0x1fffffe + x13) - x31);
+ out[5] = ((0x1fffffe + x15) - x33);
+ out[6] = ((0x3fffffe + x17) - x35);
+ out[7] = ((0x1fffffe + x19) - x37);
+ out[8] = ((0x1fffffe + x21) - x39);
+ out[9] = ((0x1fffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.log b/src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..21a468f87
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x1fffffe + x20) - x38), ((0x1fffffe + x21) - x39), ((0x1fffffe + x19) - x37), ((0x3fffffe + x17) - x35), ((0x1fffffe + x15) - x33), ((0x1fffffe + x13) - x31), ((0x3fffffe + x11) - x29), ((0x1fffffe + x9) - x27), ((0x1fffffe + x7) - x25), ((Const 67108846 + x5) - x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9_10limbs/freeze.c b/src/Specific/solinas32_2e243m9_10limbs/freeze.c
new file mode 100644
index 000000000..b2de4baef
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554423);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0xffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0xffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0xffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0xffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0xffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffff);
+ { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ { uint32_t x50 = (x49 & Const 33554423);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint32_t x54 = (x49 & 0xffffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint32_t x58 = (x49 & 0xffffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint32_t x62 = (x49 & 0x1ffffff);
+ { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint32_t x66 = (x49 & 0xffffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint32_t x70 = (x49 & 0xffffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint32_t x74 = (x49 & 0x1ffffff);
+ { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint32_t x78 = (x49 & 0xffffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint32_t x82 = (x49 & 0xffffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint32_t x86 = (x49 & 0xffffff);
+ { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.log b/src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..f31a1a4e1
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554423);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0xffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0xffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0xffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0xffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0xffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffff);
+ uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ uint32_t x50 = (x49 & Const 33554423);
+ uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint32_t x54 = (x49 & 0xffffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint32_t x58 = (x49 & 0xffffff);
+ uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint32_t x62 = (x49 & 0x1ffffff);
+ uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint32_t x66 = (x49 & 0xffffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint32_t x70 = (x49 & 0xffffff);
+ uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint32_t x74 = (x49 & 0x1ffffff);
+ uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint32_t x78 = (x49 & 0xffffff);
+ uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint32_t x82 = (x49 & 0xffffff);
+ uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint32_t x86 = (x49 & 0xffffff);
+ uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9_11limbs/feadd.c b/src/Specific/solinas32_2e251m9_11limbs/feadd.c
new file mode 100644
index 000000000..1763e8727
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.log b/src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..433ecbc2e
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9_11limbs/femul.c b/src/Specific/solinas32_2e251m9_11limbs/femul.c
new file mode 100644
index 000000000..1e1f990eb
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ { uint64_t x44 = (((uint64_t)x5 * x42) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + (((uint64_t)x23 * x27) + ((uint64_t)x22 * x25)))))))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x23 * x25)))))))))) + (0x9 * (0x2 * ((uint64_t)x22 * x42))));
+ { uint64_t x46 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x21 * x25))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x42)) + (0x2 * ((uint64_t)x22 * x43)))));
+ { uint64_t x47 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x19 * x25)))))))) + (0x9 * ((0x2 * ((uint64_t)x21 * x42)) + ((0x2 * ((uint64_t)x23 * x43)) + (0x2 * ((uint64_t)x22 * x41))))));
+ { uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x42)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (0x2 * ((uint64_t)x22 * x39)))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((uint64_t)x15 * x25)))))) + (0x9 * (((uint64_t)x17 * x42) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + ((uint64_t)x22 * x37)))))));
+ { uint64_t x50 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((uint64_t)x13 * x25))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x42)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (0x2 * ((uint64_t)x22 * x35)))))))));
+ { uint64_t x51 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((uint64_t)x11 * x25)))) + (0x9 * ((0x2 * ((uint64_t)x13 * x42)) + ((0x2 * ((uint64_t)x15 * x43)) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((0x2 * ((uint64_t)x23 * x35)) + (0x2 * ((uint64_t)x22 * x33))))))))));
+ { uint64_t x52 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((uint64_t)x9 * x25))) + (0x9 * ((0x2 * ((uint64_t)x11 * x42)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (0x2 * ((uint64_t)x22 * x31)))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x9 * ((0x2 * ((uint64_t)x9 * x42)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + (0x2 * ((uint64_t)x22 * x29))))))))))));
+ { uint64_t x54 = (((uint64_t)x5 * x25) + (0x9 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (x54 >> 0x17);
+ { uint32_t x56 = ((uint32_t)x54 & 0x7fffff);
+ { uint64_t x57 = (x55 + x53);
+ { uint64_t x58 = (x57 >> 0x17);
+ { uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
+ { uint64_t x60 = (x58 + x52);
+ { uint64_t x61 = (x60 >> 0x17);
+ { uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ { uint64_t x63 = (x61 + x51);
+ { uint64_t x64 = (x63 >> 0x17);
+ { uint32_t x65 = ((uint32_t)x63 & 0x7fffff);
+ { uint64_t x66 = (x64 + x50);
+ { uint64_t x67 = (x66 >> 0x17);
+ { uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
+ { uint64_t x69 = (x67 + x49);
+ { uint64_t x70 = (x69 >> 0x16);
+ { uint32_t x71 = ((uint32_t)x69 & 0x3fffff);
+ { uint64_t x72 = (x70 + x48);
+ { uint64_t x73 = (x72 >> 0x17);
+ { uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
+ { uint64_t x75 = (x73 + x47);
+ { uint64_t x76 = (x75 >> 0x17);
+ { uint32_t x77 = ((uint32_t)x75 & 0x7fffff);
+ { uint64_t x78 = (x76 + x46);
+ { uint32_t x79 = (uint32_t) (x78 >> 0x17);
+ { uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
+ { uint64_t x81 = (x79 + x45);
+ { uint32_t x82 = (uint32_t) (x81 >> 0x17);
+ { uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
+ { uint64_t x84 = (x82 + x44);
+ { uint32_t x85 = (uint32_t) (x84 >> 0x16);
+ { uint32_t x86 = ((uint32_t)x84 & 0x3fffff);
+ { uint64_t x87 = (x56 + ((uint64_t)0x9 * x85));
+ { uint32_t x88 = (uint32_t) (x87 >> 0x17);
+ { uint32_t x89 = ((uint32_t)x87 & 0x7fffff);
+ { uint32_t x90 = (x88 + x59);
+ { uint32_t x91 = (x90 >> 0x17);
+ { uint32_t x92 = (x90 & 0x7fffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e251m9_11limbs/femulDisplay.log b/src/Specific/solinas32_2e251m9_11limbs/femulDisplay.log
new file mode 100644
index 000000000..45b1fede9
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint64_t x44 = (((uint64_t)x5 * x42) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + (((uint64_t)x23 * x27) + ((uint64_t)x22 * x25)))))))))));
+ uint64_t x45 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x23 * x25)))))))))) + (0x9 * (0x2 * ((uint64_t)x22 * x42))));
+ uint64_t x46 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x21 * x25))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x42)) + (0x2 * ((uint64_t)x22 * x43)))));
+ uint64_t x47 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x19 * x25)))))))) + (0x9 * ((0x2 * ((uint64_t)x21 * x42)) + ((0x2 * ((uint64_t)x23 * x43)) + (0x2 * ((uint64_t)x22 * x41))))));
+ uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x42)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (0x2 * ((uint64_t)x22 * x39)))))));
+ uint64_t x49 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((uint64_t)x15 * x25)))))) + (0x9 * (((uint64_t)x17 * x42) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + ((uint64_t)x22 * x37)))))));
+ uint64_t x50 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((uint64_t)x13 * x25))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x42)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (0x2 * ((uint64_t)x22 * x35)))))))));
+ uint64_t x51 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((uint64_t)x11 * x25)))) + (0x9 * ((0x2 * ((uint64_t)x13 * x42)) + ((0x2 * ((uint64_t)x15 * x43)) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((0x2 * ((uint64_t)x23 * x35)) + (0x2 * ((uint64_t)x22 * x33))))))))));
+ uint64_t x52 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((uint64_t)x9 * x25))) + (0x9 * ((0x2 * ((uint64_t)x11 * x42)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (0x2 * ((uint64_t)x22 * x31)))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x9 * ((0x2 * ((uint64_t)x9 * x42)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + (0x2 * ((uint64_t)x22 * x29))))))))))));
+ uint64_t x54 = (((uint64_t)x5 * x25) + (0x9 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ uint64_t x55 = (x54 >> 0x17);
+ uint32_t x56 = ((uint32_t)x54 & 0x7fffff);
+ uint64_t x57 = (x55 + x53);
+ uint64_t x58 = (x57 >> 0x17);
+ uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
+ uint64_t x60 = (x58 + x52);
+ uint64_t x61 = (x60 >> 0x17);
+ uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ uint64_t x63 = (x61 + x51);
+ uint64_t x64 = (x63 >> 0x17);
+ uint32_t x65 = ((uint32_t)x63 & 0x7fffff);
+ uint64_t x66 = (x64 + x50);
+ uint64_t x67 = (x66 >> 0x17);
+ uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
+ uint64_t x69 = (x67 + x49);
+ uint64_t x70 = (x69 >> 0x16);
+ uint32_t x71 = ((uint32_t)x69 & 0x3fffff);
+ uint64_t x72 = (x70 + x48);
+ uint64_t x73 = (x72 >> 0x17);
+ uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
+ uint64_t x75 = (x73 + x47);
+ uint64_t x76 = (x75 >> 0x17);
+ uint32_t x77 = ((uint32_t)x75 & 0x7fffff);
+ uint64_t x78 = (x76 + x46);
+ uint32_t x79 = (uint32_t) (x78 >> 0x17);
+ uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
+ uint64_t x81 = (x79 + x45);
+ uint32_t x82 = (uint32_t) (x81 >> 0x17);
+ uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
+ uint64_t x84 = (x82 + x44);
+ uint32_t x85 = (uint32_t) (x84 >> 0x16);
+ uint32_t x86 = ((uint32_t)x84 & 0x3fffff);
+ uint64_t x87 = (x56 + ((uint64_t)0x9 * x85));
+ uint32_t x88 = (uint32_t) (x87 >> 0x17);
+ uint32_t x89 = ((uint32_t)x87 & 0x7fffff);
+ uint32_t x90 = (x88 + x59);
+ uint32_t x91 = (x90 >> 0x17);
+ uint32_t x92 = (x90 & 0x7fffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesquare.c b/src/Specific/solinas32_2e251m9_11limbs/fesquare.c
new file mode 100644
index 000000000..748440285
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x21 = (((uint64_t)x2 * x19) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x19 * x2)))))))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (0x2 * ((uint64_t)x19 * x19))));
+ { uint64_t x23 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x19)) + (0x2 * ((uint64_t)x19 * x20)))));
+ { uint64_t x24 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((0x2 * ((uint64_t)x18 * x19)) + ((0x2 * ((uint64_t)x20 * x20)) + (0x2 * ((uint64_t)x19 * x18))))));
+ { uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x19)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (0x2 * ((uint64_t)x19 * x16)))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x19) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((uint64_t)x19 * x14)))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x19)) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (0x2 * ((uint64_t)x19 * x12)))))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint64_t)x10 * x19)) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (0x2 * ((uint64_t)x19 * x10))))))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x19)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (0x2 * ((uint64_t)x19 * x8)))))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x19)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + (0x2 * ((uint64_t)x19 * x6))))))))))));
+ { uint64_t x31 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x32 + x30);
+ { uint64_t x35 = (x34 >> 0x17);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ { uint64_t x37 = (x35 + x29);
+ { uint64_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x28);
+ { uint64_t x41 = (x40 >> 0x17);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ { uint64_t x43 = (x41 + x27);
+ { uint64_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x26);
+ { uint64_t x47 = (x46 >> 0x16);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ { uint64_t x49 = (x47 + x25);
+ { uint64_t x50 = (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x50 + x24);
+ { uint64_t x53 = (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x53 + x23);
+ { uint32_t x56 = (uint32_t) (x55 >> 0x17);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ { uint64_t x58 = (x56 + x22);
+ { uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ { uint64_t x61 = (x59 + x21);
+ { uint32_t x62 = (uint32_t) (x61 >> 0x16);
+ { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
+ { uint64_t x64 = (x33 + ((uint64_t)0x9 * x62));
+ { uint32_t x65 = (uint32_t) (x64 >> 0x17);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ { uint32_t x67 = (x65 + x36);
+ { uint32_t x68 = (x67 >> 0x17);
+ { uint32_t x69 = (x67 & 0x7fffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.log b/src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..ad2168cc4
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x21 = (((uint64_t)x2 * x19) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x19 * x2)))))))))));
+ uint64_t x22 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (0x2 * ((uint64_t)x19 * x19))));
+ uint64_t x23 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x19)) + (0x2 * ((uint64_t)x19 * x20)))));
+ uint64_t x24 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((0x2 * ((uint64_t)x18 * x19)) + ((0x2 * ((uint64_t)x20 * x20)) + (0x2 * ((uint64_t)x19 * x18))))));
+ uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x19)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (0x2 * ((uint64_t)x19 * x16)))))));
+ uint64_t x26 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x19) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((uint64_t)x19 * x14)))))));
+ uint64_t x27 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x19)) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (0x2 * ((uint64_t)x19 * x12)))))))));
+ uint64_t x28 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint64_t)x10 * x19)) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (0x2 * ((uint64_t)x19 * x10))))))))));
+ uint64_t x29 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x19)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (0x2 * ((uint64_t)x19 * x8)))))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x19)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + (0x2 * ((uint64_t)x19 * x6))))))))))));
+ uint64_t x31 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ uint64_t x32 = (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x32 + x30);
+ uint64_t x35 = (x34 >> 0x17);
+ uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ uint64_t x37 = (x35 + x29);
+ uint64_t x38 = (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x28);
+ uint64_t x41 = (x40 >> 0x17);
+ uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ uint64_t x43 = (x41 + x27);
+ uint64_t x44 = (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x26);
+ uint64_t x47 = (x46 >> 0x16);
+ uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
+ uint64_t x49 = (x47 + x25);
+ uint64_t x50 = (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x50 + x24);
+ uint64_t x53 = (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x53 + x23);
+ uint32_t x56 = (uint32_t) (x55 >> 0x17);
+ uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ uint64_t x58 = (x56 + x22);
+ uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ uint64_t x61 = (x59 + x21);
+ uint32_t x62 = (uint32_t) (x61 >> 0x16);
+ uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
+ uint64_t x64 = (x33 + ((uint64_t)0x9 * x62));
+ uint32_t x65 = (uint32_t) (x64 >> 0x17);
+ uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ uint32_t x67 = (x65 + x36);
+ uint32_t x68 = (x67 >> 0x17);
+ uint32_t x69 = (x67 & 0x7fffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesub.c b/src/Specific/solinas32_2e251m9_11limbs/fesub.c
new file mode 100644
index 000000000..94352c17b
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = ((Const 16777198 + x5) - x25);
+ out[1] = ((0xfffffe + x7) - x27);
+ out[2] = ((0xfffffe + x9) - x29);
+ out[3] = ((0xfffffe + x11) - x31);
+ out[4] = ((0xfffffe + x13) - x33);
+ out[5] = ((0x7ffffe + x15) - x35);
+ out[6] = ((0xfffffe + x17) - x37);
+ out[7] = ((0xfffffe + x19) - x39);
+ out[8] = ((0xfffffe + x21) - x41);
+ out[9] = ((0xfffffe + x23) - x43);
+ out[10] = ((0x7ffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.log b/src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..b162e9cb7
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0x7ffffe + x22) - x42), ((0xfffffe + x23) - x43), ((0xfffffe + x21) - x41), ((0xfffffe + x19) - x39), ((0xfffffe + x17) - x37), ((0x7ffffe + x15) - x35), ((0xfffffe + x13) - x33), ((0xfffffe + x11) - x31), ((0xfffffe + x9) - x29), ((0xfffffe + x7) - x27), ((Const 16777198 + x5) - x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9_11limbs/freeze.c b/src/Specific/solinas32_2e251m9_11limbs/freeze.c
new file mode 100644
index 000000000..056294e18
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffff7);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x3fffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffff);
+ { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ { uint32_t x55 = (x54 & 0x7ffff7);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint32_t x59 = (x54 & 0x7fffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint32_t x63 = (x54 & 0x7fffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint32_t x67 = (x54 & 0x7fffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint32_t x71 = (x54 & 0x7fffff);
+ { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint32_t x75 = (x54 & 0x3fffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint32_t x79 = (x54 & 0x7fffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint32_t x83 = (x54 & 0x7fffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint32_t x87 = (x54 & 0x7fffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint32_t x91 = (x54 & 0x7fffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint32_t x95 = (x54 & 0x3fffff);
+ { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.log b/src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..c6a24c3eb
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffff7);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x3fffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffff);
+ uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ uint32_t x55 = (x54 & 0x7ffff7);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint32_t x59 = (x54 & 0x7fffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint32_t x63 = (x54 & 0x7fffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint32_t x67 = (x54 & 0x7fffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint32_t x71 = (x54 & 0x7fffff);
+ uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint32_t x75 = (x54 & 0x3fffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint32_t x79 = (x54 & 0x7fffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint32_t x83 = (x54 & 0x7fffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint32_t x87 = (x54 & 0x7fffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint32_t x91 = (x54 & 0x7fffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint32_t x95 = (x54 & 0x3fffff);
+ uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19_11limbs/feadd.c b/src/Specific/solinas32_2e255m19_11limbs/feadd.c
new file mode 100644
index 000000000..1763e8727
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.log b/src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..433ecbc2e
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19_11limbs/femul.c b/src/Specific/solinas32_2e255m19_11limbs/femul.c
new file mode 100644
index 000000000..706430ee4
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ { uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0x13 * ((uint64_t)x22 * x42)));
+ { uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x13 * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
+ { uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0x13 * (((uint64_t)x21 * x42) + (((uint64_t)x23 * x43) + ((uint64_t)x22 * x41)))));
+ { uint64_t x48 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((uint64_t)x17 * x25))))))) + (0x13 * (((uint64_t)x19 * x42) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x22 * x39))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0x13 * ((0x2 * ((uint64_t)x17 * x42)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (0x2 * ((uint64_t)x22 * x37))))))));
+ { uint64_t x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) + (0x13 * (((uint64_t)x15 * x42) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x22 * x35))))))));
+ { uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0x13 * (((uint64_t)x13 * x42) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (((uint64_t)x23 * x35) + ((uint64_t)x22 * x33)))))))));
+ { uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0x13 * (((uint64_t)x11 * x42) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x22 * x31))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x13 * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
+ { uint64_t x54 = (((uint64_t)x5 * x25) + (0x13 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (x54 >> 0x18);
+ { uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ { uint64_t x57 = (x55 + x53);
+ { uint64_t x58 = (x57 >> 0x17);
+ { uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
+ { uint64_t x60 = (x58 + x52);
+ { uint64_t x61 = (x60 >> 0x17);
+ { uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ { uint64_t x63 = (x61 + x51);
+ { uint64_t x64 = (x63 >> 0x17);
+ { uint32_t x65 = ((uint32_t)x63 & 0x7fffff);
+ { uint64_t x66 = (x64 + x50);
+ { uint64_t x67 = (x66 >> 0x17);
+ { uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
+ { uint64_t x69 = (x67 + x49);
+ { uint64_t x70 = (x69 >> 0x18);
+ { uint32_t x71 = ((uint32_t)x69 & 0xffffff);
+ { uint64_t x72 = (x70 + x48);
+ { uint64_t x73 = (x72 >> 0x17);
+ { uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
+ { uint64_t x75 = (x73 + x47);
+ { uint64_t x76 = (x75 >> 0x17);
+ { uint32_t x77 = ((uint32_t)x75 & 0x7fffff);
+ { uint64_t x78 = (x76 + x46);
+ { uint64_t x79 = (x78 >> 0x17);
+ { uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
+ { uint64_t x81 = (x79 + x45);
+ { uint32_t x82 = (uint32_t) (x81 >> 0x17);
+ { uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
+ { uint64_t x84 = (x82 + x44);
+ { uint32_t x85 = (uint32_t) (x84 >> 0x17);
+ { uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
+ { uint64_t x87 = (x56 + ((uint64_t)0x13 * x85));
+ { uint32_t x88 = (uint32_t) (x87 >> 0x18);
+ { uint32_t x89 = ((uint32_t)x87 & 0xffffff);
+ { uint32_t x90 = (x88 + x59);
+ { uint32_t x91 = (x90 >> 0x17);
+ { uint32_t x92 = (x90 & 0x7fffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m19_11limbs/femulDisplay.log b/src/Specific/solinas32_2e255m19_11limbs/femulDisplay.log
new file mode 100644
index 000000000..68f38291e
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0x13 * ((uint64_t)x22 * x42)));
+ uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x13 * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
+ uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0x13 * (((uint64_t)x21 * x42) + (((uint64_t)x23 * x43) + ((uint64_t)x22 * x41)))));
+ uint64_t x48 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((uint64_t)x17 * x25))))))) + (0x13 * (((uint64_t)x19 * x42) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x22 * x39))))));
+ uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0x13 * ((0x2 * ((uint64_t)x17 * x42)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (0x2 * ((uint64_t)x22 * x37))))))));
+ uint64_t x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) + (0x13 * (((uint64_t)x15 * x42) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x22 * x35))))))));
+ uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0x13 * (((uint64_t)x13 * x42) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (((uint64_t)x23 * x35) + ((uint64_t)x22 * x33)))))))));
+ uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0x13 * (((uint64_t)x11 * x42) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x22 * x31))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x13 * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
+ uint64_t x54 = (((uint64_t)x5 * x25) + (0x13 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ uint64_t x55 = (x54 >> 0x18);
+ uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ uint64_t x57 = (x55 + x53);
+ uint64_t x58 = (x57 >> 0x17);
+ uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
+ uint64_t x60 = (x58 + x52);
+ uint64_t x61 = (x60 >> 0x17);
+ uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ uint64_t x63 = (x61 + x51);
+ uint64_t x64 = (x63 >> 0x17);
+ uint32_t x65 = ((uint32_t)x63 & 0x7fffff);
+ uint64_t x66 = (x64 + x50);
+ uint64_t x67 = (x66 >> 0x17);
+ uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
+ uint64_t x69 = (x67 + x49);
+ uint64_t x70 = (x69 >> 0x18);
+ uint32_t x71 = ((uint32_t)x69 & 0xffffff);
+ uint64_t x72 = (x70 + x48);
+ uint64_t x73 = (x72 >> 0x17);
+ uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
+ uint64_t x75 = (x73 + x47);
+ uint64_t x76 = (x75 >> 0x17);
+ uint32_t x77 = ((uint32_t)x75 & 0x7fffff);
+ uint64_t x78 = (x76 + x46);
+ uint64_t x79 = (x78 >> 0x17);
+ uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
+ uint64_t x81 = (x79 + x45);
+ uint32_t x82 = (uint32_t) (x81 >> 0x17);
+ uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
+ uint64_t x84 = (x82 + x44);
+ uint32_t x85 = (uint32_t) (x84 >> 0x17);
+ uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
+ uint64_t x87 = (x56 + ((uint64_t)0x13 * x85));
+ uint32_t x88 = (uint32_t) (x87 >> 0x18);
+ uint32_t x89 = ((uint32_t)x87 & 0xffffff);
+ uint32_t x90 = (x88 + x59);
+ uint32_t x91 = (x90 >> 0x17);
+ uint32_t x92 = (x90 & 0x7fffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesquare.c b/src/Specific/solinas32_2e255m19_11limbs/fesquare.c
new file mode 100644
index 000000000..33b637cc4
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13 * ((uint64_t)x19 * x19)));
+ { uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
+ { uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x19) + (((uint64_t)x20 * x20) + ((uint64_t)x19 * x18)))));
+ { uint64_t x25 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x19) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x19 * x16))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x19)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (0x2 * ((uint64_t)x19 * x14))))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x19) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((uint64_t)x19 * x12))))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x19) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + ((uint64_t)x19 * x10)))))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x19) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((uint64_t)x19 * x8))))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
+ { uint64_t x31 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x30);
+ { uint64_t x35 = (x34 >> 0x17);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ { uint64_t x37 = (x35 + x29);
+ { uint64_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x28);
+ { uint64_t x41 = (x40 >> 0x17);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ { uint64_t x43 = (x41 + x27);
+ { uint64_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x26);
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x25);
+ { uint64_t x50 = (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x50 + x24);
+ { uint64_t x53 = (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x53 + x23);
+ { uint64_t x56 = (x55 >> 0x17);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ { uint64_t x58 = (x56 + x22);
+ { uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ { uint64_t x61 = (x59 + x21);
+ { uint32_t x62 = (uint32_t) (x61 >> 0x17);
+ { uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
+ { uint64_t x64 = (x33 + ((uint64_t)0x13 * x62));
+ { uint32_t x65 = (uint32_t) (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint32_t x67 = (x65 + x36);
+ { uint32_t x68 = (x67 >> 0x17);
+ { uint32_t x69 = (x67 & 0x7fffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.log b/src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..e2fd23f51
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13 * ((uint64_t)x19 * x19)));
+ uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
+ uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x19) + (((uint64_t)x20 * x20) + ((uint64_t)x19 * x18)))));
+ uint64_t x25 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x19) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x19 * x16))))));
+ uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x19)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (0x2 * ((uint64_t)x19 * x14))))))));
+ uint64_t x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x19) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((uint64_t)x19 * x12))))))));
+ uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x19) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + ((uint64_t)x19 * x10)))))))));
+ uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x19) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((uint64_t)x19 * x8))))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
+ uint64_t x31 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x30);
+ uint64_t x35 = (x34 >> 0x17);
+ uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ uint64_t x37 = (x35 + x29);
+ uint64_t x38 = (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x28);
+ uint64_t x41 = (x40 >> 0x17);
+ uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
+ uint64_t x43 = (x41 + x27);
+ uint64_t x44 = (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x26);
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x25);
+ uint64_t x50 = (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x50 + x24);
+ uint64_t x53 = (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x53 + x23);
+ uint64_t x56 = (x55 >> 0x17);
+ uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ uint64_t x58 = (x56 + x22);
+ uint32_t x59 = (uint32_t) (x58 >> 0x17);
+ uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ uint64_t x61 = (x59 + x21);
+ uint32_t x62 = (uint32_t) (x61 >> 0x17);
+ uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
+ uint64_t x64 = (x33 + ((uint64_t)0x13 * x62));
+ uint32_t x65 = (uint32_t) (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint32_t x67 = (x65 + x36);
+ uint32_t x68 = (x67 >> 0x17);
+ uint32_t x69 = (x67 & 0x7fffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesub.c b/src/Specific/solinas32_2e255m19_11limbs/fesub.c
new file mode 100644
index 000000000..f9a7b5550
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = ((Const 33554394 + x5) - x25);
+ out[1] = ((0xfffffe + x7) - x27);
+ out[2] = ((0xfffffe + x9) - x29);
+ out[3] = ((0xfffffe + x11) - x31);
+ out[4] = ((0xfffffe + x13) - x33);
+ out[5] = ((0x1fffffe + x15) - x35);
+ out[6] = ((0xfffffe + x17) - x37);
+ out[7] = ((0xfffffe + x19) - x39);
+ out[8] = ((0xfffffe + x21) - x41);
+ out[9] = ((0xfffffe + x23) - x43);
+ out[10] = ((0xfffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.log b/src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..3f3a9b93e
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0xfffffe + x22) - x42), ((0xfffffe + x23) - x43), ((0xfffffe + x21) - x41), ((0xfffffe + x19) - x39), ((0xfffffe + x17) - x37), ((0x1fffffe + x15) - x35), ((0xfffffe + x13) - x33), ((0xfffffe + x11) - x31), ((0xfffffe + x9) - x29), ((0xfffffe + x7) - x27), ((Const 33554394 + x5) - x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19_11limbs/freeze.c b/src/Specific/solinas32_2e255m19_11limbs/freeze.c
new file mode 100644
index 000000000..2c2ad3749
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777197);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0xffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7fffff);
+ { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ { uint32_t x55 = (x54 & Const 16777197);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint32_t x59 = (x54 & 0x7fffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint32_t x63 = (x54 & 0x7fffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint32_t x67 = (x54 & 0x7fffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint32_t x71 = (x54 & 0x7fffff);
+ { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint32_t x75 = (x54 & 0xffffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint32_t x79 = (x54 & 0x7fffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint32_t x83 = (x54 & 0x7fffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint32_t x87 = (x54 & 0x7fffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint32_t x91 = (x54 & 0x7fffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint32_t x95 = (x54 & 0x7fffff);
+ { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.log b/src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..704d1db03
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777197);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0xffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7fffff);
+ uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ uint32_t x55 = (x54 & Const 16777197);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint32_t x59 = (x54 & 0x7fffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint32_t x63 = (x54 & 0x7fffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint32_t x67 = (x54 & 0x7fffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint32_t x71 = (x54 & 0x7fffff);
+ uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint32_t x75 = (x54 & 0xffffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint32_t x79 = (x54 & 0x7fffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint32_t x83 = (x54 & 0x7fffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint32_t x87 = (x54 & 0x7fffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint32_t x91 = (x54 & 0x7fffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint32_t x95 = (x54 & 0x7fffff);
+ uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765_13limbs/feadd.c b/src/Specific/solinas32_2e255m765_13limbs/feadd.c
new file mode 100644
index 000000000..dbbe1da57
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/feadd.c
@@ -0,0 +1,42 @@
+static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = (x5 + x29);
+ out[1] = (x7 + x31);
+ out[2] = (x9 + x33);
+ out[3] = (x11 + x35);
+ out[4] = (x13 + x37);
+ out[5] = (x15 + x39);
+ out[6] = (x17 + x41);
+ out[7] = (x19 + x43);
+ out[8] = (x21 + x45);
+ out[9] = (x23 + x47);
+ out[10] = (x25 + x49);
+ out[11] = (x27 + x51);
+ out[12] = (x26 + x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.log b/src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.log
new file mode 100644
index 000000000..e64abeaba
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ ((x26 + x50), (x27 + x51), (x25 + x49), (x23 + x47), (x21 + x45), (x19 + x43), (x17 + x41), (x15 + x39), (x13 + x37), (x11 + x35), (x9 + x33), (x7 + x31), (x5 + x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765_13limbs/femul.c b/src/Specific/solinas32_2e255m765_13limbs/femul.c
new file mode 100644
index 000000000..e42d85f01
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/femul.c
@@ -0,0 +1,99 @@
+static void femul(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ { uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + ((0x2 * ((uint64_t)x9 * x49)) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + ((0x2 * ((uint64_t)x15 * x43)) + (((uint64_t)x17 * x41) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((0x2 * ((uint64_t)x25 * x33)) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + ((uint64_t)x27 * x29)))))))))))) + (0x2fd * (0x2 * ((uint64_t)x26 * x50))));
+ { uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0x2fd * (((uint64_t)x27 * x50) + ((uint64_t)x26 * x51))));
+ { uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + ((0x2 * ((uint64_t)x9 * x43)) + (((uint64_t)x11 * x41) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x2fd * ((0x2 * ((uint64_t)x25 * x50)) + (((uint64_t)x27 * x51) + (0x2 * ((uint64_t)x26 * x49))))));
+ { uint64_t x56 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((uint64_t)x21 * x29))))))))) + (0x2fd * ((0x2 * ((uint64_t)x23 * x50)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + (0x2 * ((uint64_t)x26 * x47)))))));
+ { uint64_t x57 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + ((0x2 * ((uint64_t)x9 * x39)) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + ((uint64_t)x19 * x29)))))))) + (0x2fd * (((uint64_t)x21 * x50) + (((uint64_t)x23 * x51) + ((0x2 * ((uint64_t)x25 * x49)) + (((uint64_t)x27 * x47) + ((uint64_t)x26 * x45)))))));
+ { uint64_t x58 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((uint64_t)x17 * x29))))))) + (0x2fd * ((0x2 * ((uint64_t)x19 * x50)) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + (0x2 * ((uint64_t)x26 * x43)))))))));
+ { uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x2fd * (((uint64_t)x17 * x50) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((uint64_t)x26 * x41)))))))));
+ { uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0x2fd * ((0x2 * ((uint64_t)x15 * x50)) + (((uint64_t)x17 * x51) + ((0x2 * ((uint64_t)x19 * x49)) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (((uint64_t)x27 * x41) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ { uint64_t x61 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((uint64_t)x11 * x29)))) + (0x2fd * ((0x2 * ((uint64_t)x13 * x50)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + (0x2 * ((uint64_t)x26 * x37))))))))))));
+ { uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x2fd * (((uint64_t)x11 * x50) + (((uint64_t)x13 * x51) + ((0x2 * ((uint64_t)x15 * x49)) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((0x2 * ((uint64_t)x25 * x39)) + (((uint64_t)x27 * x37) + ((uint64_t)x26 * x35))))))))))));
+ { uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x2fd * ((0x2 * ((uint64_t)x9 * x50)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + (((uint64_t)x27 * x35) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ { uint64_t x64 = (((uint64_t)x5 * x29) + (0x2fd * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ { uint64_t x65 = (x64 >> 0x14);
+ { uint32_t x66 = ((uint32_t)x64 & 0xfffff);
+ { uint64_t x67 = (x65 + x63);
+ { uint64_t x68 = (x67 >> 0x14);
+ { uint32_t x69 = ((uint32_t)x67 & 0xfffff);
+ { uint64_t x70 = (x68 + x62);
+ { uint64_t x71 = (x70 >> 0x13);
+ { uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
+ { uint64_t x73 = (x71 + x61);
+ { uint64_t x74 = (x73 >> 0x14);
+ { uint32_t x75 = ((uint32_t)x73 & 0xfffff);
+ { uint64_t x76 = (x74 + x60);
+ { uint64_t x77 = (x76 >> 0x14);
+ { uint32_t x78 = ((uint32_t)x76 & 0xfffff);
+ { uint64_t x79 = (x77 + x59);
+ { uint64_t x80 = (x79 >> 0x13);
+ { uint32_t x81 = ((uint32_t)x79 & 0x7ffff);
+ { uint64_t x82 = (x80 + x58);
+ { uint64_t x83 = (x82 >> 0x14);
+ { uint32_t x84 = ((uint32_t)x82 & 0xfffff);
+ { uint64_t x85 = (x83 + x57);
+ { uint64_t x86 = (x85 >> 0x13);
+ { uint32_t x87 = ((uint32_t)x85 & 0x7ffff);
+ { uint64_t x88 = (x86 + x56);
+ { uint64_t x89 = (x88 >> 0x14);
+ { uint32_t x90 = ((uint32_t)x88 & 0xfffff);
+ { uint64_t x91 = (x89 + x55);
+ { uint64_t x92 = (x91 >> 0x14);
+ { uint32_t x93 = ((uint32_t)x91 & 0xfffff);
+ { uint64_t x94 = (x92 + x54);
+ { uint64_t x95 = (x94 >> 0x13);
+ { uint32_t x96 = ((uint32_t)x94 & 0x7ffff);
+ { uint64_t x97 = (x95 + x53);
+ { uint64_t x98 = (x97 >> 0x14);
+ { uint32_t x99 = ((uint32_t)x97 & 0xfffff);
+ { uint64_t x100 = (x98 + x52);
+ { uint32_t x101 = (uint32_t) (x100 >> 0x13);
+ { uint32_t x102 = ((uint32_t)x100 & 0x7ffff);
+ { uint64_t x103 = (x66 + ((uint64_t)0x2fd * x101));
+ { uint32_t x104 = (uint32_t) (x103 >> 0x14);
+ { uint32_t x105 = ((uint32_t)x103 & 0xfffff);
+ { uint32_t x106 = (x104 + x69);
+ { uint32_t x107 = (x106 >> 0x14);
+ { uint32_t x108 = (x106 & 0xfffff);
+ out[0] = x105;
+ out[1] = x108;
+ out[2] = (x107 + x72);
+ out[3] = x75;
+ out[4] = x78;
+ out[5] = x81;
+ out[6] = x84;
+ out[7] = x87;
+ out[8] = x90;
+ out[9] = x93;
+ out[10] = x96;
+ out[11] = x99;
+ out[12] = x102;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m765_13limbs/femulDisplay.log b/src/Specific/solinas32_2e255m765_13limbs/femulDisplay.log
new file mode 100644
index 000000000..587233e55
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/femulDisplay.log
@@ -0,0 +1,64 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + ((0x2 * ((uint64_t)x9 * x49)) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + ((0x2 * ((uint64_t)x15 * x43)) + (((uint64_t)x17 * x41) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((0x2 * ((uint64_t)x25 * x33)) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + ((uint64_t)x27 * x29)))))))))))) + (0x2fd * (0x2 * ((uint64_t)x26 * x50))));
+ uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0x2fd * (((uint64_t)x27 * x50) + ((uint64_t)x26 * x51))));
+ uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + ((0x2 * ((uint64_t)x9 * x43)) + (((uint64_t)x11 * x41) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x2fd * ((0x2 * ((uint64_t)x25 * x50)) + (((uint64_t)x27 * x51) + (0x2 * ((uint64_t)x26 * x49))))));
+ uint64_t x56 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((uint64_t)x21 * x29))))))))) + (0x2fd * ((0x2 * ((uint64_t)x23 * x50)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + (0x2 * ((uint64_t)x26 * x47)))))));
+ uint64_t x57 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + ((0x2 * ((uint64_t)x9 * x39)) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + ((uint64_t)x19 * x29)))))))) + (0x2fd * (((uint64_t)x21 * x50) + (((uint64_t)x23 * x51) + ((0x2 * ((uint64_t)x25 * x49)) + (((uint64_t)x27 * x47) + ((uint64_t)x26 * x45)))))));
+ uint64_t x58 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((uint64_t)x17 * x29))))))) + (0x2fd * ((0x2 * ((uint64_t)x19 * x50)) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + (0x2 * ((uint64_t)x26 * x43)))))))));
+ uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x2fd * (((uint64_t)x17 * x50) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((uint64_t)x26 * x41)))))))));
+ uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0x2fd * ((0x2 * ((uint64_t)x15 * x50)) + (((uint64_t)x17 * x51) + ((0x2 * ((uint64_t)x19 * x49)) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (((uint64_t)x27 * x41) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ uint64_t x61 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((uint64_t)x11 * x29)))) + (0x2fd * ((0x2 * ((uint64_t)x13 * x50)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + (0x2 * ((uint64_t)x26 * x37))))))))))));
+ uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x2fd * (((uint64_t)x11 * x50) + (((uint64_t)x13 * x51) + ((0x2 * ((uint64_t)x15 * x49)) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((0x2 * ((uint64_t)x25 * x39)) + (((uint64_t)x27 * x37) + ((uint64_t)x26 * x35))))))))))));
+ uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x2fd * ((0x2 * ((uint64_t)x9 * x50)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + (((uint64_t)x27 * x35) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ uint64_t x64 = (((uint64_t)x5 * x29) + (0x2fd * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ uint64_t x65 = (x64 >> 0x14);
+ uint32_t x66 = ((uint32_t)x64 & 0xfffff);
+ uint64_t x67 = (x65 + x63);
+ uint64_t x68 = (x67 >> 0x14);
+ uint32_t x69 = ((uint32_t)x67 & 0xfffff);
+ uint64_t x70 = (x68 + x62);
+ uint64_t x71 = (x70 >> 0x13);
+ uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
+ uint64_t x73 = (x71 + x61);
+ uint64_t x74 = (x73 >> 0x14);
+ uint32_t x75 = ((uint32_t)x73 & 0xfffff);
+ uint64_t x76 = (x74 + x60);
+ uint64_t x77 = (x76 >> 0x14);
+ uint32_t x78 = ((uint32_t)x76 & 0xfffff);
+ uint64_t x79 = (x77 + x59);
+ uint64_t x80 = (x79 >> 0x13);
+ uint32_t x81 = ((uint32_t)x79 & 0x7ffff);
+ uint64_t x82 = (x80 + x58);
+ uint64_t x83 = (x82 >> 0x14);
+ uint32_t x84 = ((uint32_t)x82 & 0xfffff);
+ uint64_t x85 = (x83 + x57);
+ uint64_t x86 = (x85 >> 0x13);
+ uint32_t x87 = ((uint32_t)x85 & 0x7ffff);
+ uint64_t x88 = (x86 + x56);
+ uint64_t x89 = (x88 >> 0x14);
+ uint32_t x90 = ((uint32_t)x88 & 0xfffff);
+ uint64_t x91 = (x89 + x55);
+ uint64_t x92 = (x91 >> 0x14);
+ uint32_t x93 = ((uint32_t)x91 & 0xfffff);
+ uint64_t x94 = (x92 + x54);
+ uint64_t x95 = (x94 >> 0x13);
+ uint32_t x96 = ((uint32_t)x94 & 0x7ffff);
+ uint64_t x97 = (x95 + x53);
+ uint64_t x98 = (x97 >> 0x14);
+ uint32_t x99 = ((uint32_t)x97 & 0xfffff);
+ uint64_t x100 = (x98 + x52);
+ uint32_t x101 = (uint32_t) (x100 >> 0x13);
+ uint32_t x102 = ((uint32_t)x100 & 0x7ffff);
+ uint64_t x103 = (x66 + ((uint64_t)0x2fd * x101));
+ uint32_t x104 = (uint32_t) (x103 >> 0x14);
+ uint32_t x105 = ((uint32_t)x103 & 0xfffff);
+ uint32_t x106 = (x104 + x69);
+ uint32_t x107 = (x106 >> 0x14);
+ uint32_t x108 = (x106 & 0xfffff);
+ return (Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, (x107 + x72), Return x108, Return x105))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesquare.c b/src/Specific/solinas32_2e255m765_13limbs/fesquare.c
new file mode 100644
index 000000000..96f979ec2
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesquare.c
@@ -0,0 +1,86 @@
+static void fesquare(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x2fd * (0x2 * ((uint64_t)x23 * x23))));
+ { uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x2fd * (((uint64_t)x24 * x23) + ((uint64_t)x23 * x24))));
+ { uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x2fd * ((0x2 * ((uint64_t)x22 * x23)) + (((uint64_t)x24 * x24) + (0x2 * ((uint64_t)x23 * x22))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x2fd * ((0x2 * ((uint64_t)x20 * x23)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (0x2 * ((uint64_t)x23 * x20)))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x2fd * (((uint64_t)x18 * x23) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + ((uint64_t)x23 * x18)))))));
+ { uint64_t x31 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x2fd * ((0x2 * ((uint64_t)x16 * x23)) + (((uint64_t)x18 * x24) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (((uint64_t)x24 * x18) + (0x2 * ((uint64_t)x23 * x16)))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x2fd * (((uint64_t)x14 * x23) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + ((uint64_t)x23 * x14)))))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x2fd * ((0x2 * ((uint64_t)x12 * x23)) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x2fd * ((0x2 * ((uint64_t)x10 * x23)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (0x2 * ((uint64_t)x23 * x10))))))))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x2fd * (((uint64_t)x8 * x23) + (((uint64_t)x10 * x24) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + ((uint64_t)x23 * x8))))))))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x2fd * ((0x2 * ((uint64_t)x6 * x23)) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ { uint64_t x37 = (((uint64_t)x2 * x2) + (0x2fd * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ { uint64_t x38 = (x37 >> 0x14);
+ { uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ { uint64_t x40 = (x38 + x36);
+ { uint64_t x41 = (x40 >> 0x14);
+ { uint32_t x42 = ((uint32_t)x40 & 0xfffff);
+ { uint64_t x43 = (x41 + x35);
+ { uint64_t x44 = (x43 >> 0x13);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
+ { uint64_t x46 = (x44 + x34);
+ { uint64_t x47 = (x46 >> 0x14);
+ { uint32_t x48 = ((uint32_t)x46 & 0xfffff);
+ { uint64_t x49 = (x47 + x33);
+ { uint64_t x50 = (x49 >> 0x14);
+ { uint32_t x51 = ((uint32_t)x49 & 0xfffff);
+ { uint64_t x52 = (x50 + x32);
+ { uint64_t x53 = (x52 >> 0x13);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
+ { uint64_t x55 = (x53 + x31);
+ { uint64_t x56 = (x55 >> 0x14);
+ { uint32_t x57 = ((uint32_t)x55 & 0xfffff);
+ { uint64_t x58 = (x56 + x30);
+ { uint64_t x59 = (x58 >> 0x13);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7ffff);
+ { uint64_t x61 = (x59 + x29);
+ { uint64_t x62 = (x61 >> 0x14);
+ { uint32_t x63 = ((uint32_t)x61 & 0xfffff);
+ { uint64_t x64 = (x62 + x28);
+ { uint64_t x65 = (x64 >> 0x14);
+ { uint32_t x66 = ((uint32_t)x64 & 0xfffff);
+ { uint64_t x67 = (x65 + x27);
+ { uint64_t x68 = (x67 >> 0x13);
+ { uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
+ { uint64_t x70 = (x68 + x26);
+ { uint64_t x71 = (x70 >> 0x14);
+ { uint32_t x72 = ((uint32_t)x70 & 0xfffff);
+ { uint64_t x73 = (x71 + x25);
+ { uint32_t x74 = (uint32_t) (x73 >> 0x13);
+ { uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
+ { uint64_t x76 = (x39 + ((uint64_t)0x2fd * x74));
+ { uint32_t x77 = (uint32_t) (x76 >> 0x14);
+ { uint32_t x78 = ((uint32_t)x76 & 0xfffff);
+ { uint32_t x79 = (x77 + x42);
+ { uint32_t x80 = (x79 >> 0x14);
+ { uint32_t x81 = (x79 & 0xfffff);
+ out[0] = x78;
+ out[1] = x81;
+ out[2] = (x80 + x45);
+ out[3] = x48;
+ out[4] = x51;
+ out[5] = x54;
+ out[6] = x57;
+ out[7] = x60;
+ out[8] = x63;
+ out[9] = x66;
+ out[10] = x69;
+ out[11] = x72;
+ out[12] = x75;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.log b/src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.log
new file mode 100644
index 000000000..09f34e172
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.log
@@ -0,0 +1,64 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x2fd * (0x2 * ((uint64_t)x23 * x23))));
+ uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x2fd * (((uint64_t)x24 * x23) + ((uint64_t)x23 * x24))));
+ uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x2fd * ((0x2 * ((uint64_t)x22 * x23)) + (((uint64_t)x24 * x24) + (0x2 * ((uint64_t)x23 * x22))))));
+ uint64_t x29 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x2fd * ((0x2 * ((uint64_t)x20 * x23)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (0x2 * ((uint64_t)x23 * x20)))))));
+ uint64_t x30 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x2fd * (((uint64_t)x18 * x23) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + ((uint64_t)x23 * x18)))))));
+ uint64_t x31 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x2fd * ((0x2 * ((uint64_t)x16 * x23)) + (((uint64_t)x18 * x24) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (((uint64_t)x24 * x18) + (0x2 * ((uint64_t)x23 * x16)))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x2fd * (((uint64_t)x14 * x23) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + ((uint64_t)x23 * x14)))))))));
+ uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x2fd * ((0x2 * ((uint64_t)x12 * x23)) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ uint64_t x34 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x2fd * ((0x2 * ((uint64_t)x10 * x23)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (0x2 * ((uint64_t)x23 * x10))))))))))));
+ uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x2fd * (((uint64_t)x8 * x23) + (((uint64_t)x10 * x24) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + ((uint64_t)x23 * x8))))))))))));
+ uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x2fd * ((0x2 * ((uint64_t)x6 * x23)) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ uint64_t x37 = (((uint64_t)x2 * x2) + (0x2fd * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ uint64_t x38 = (x37 >> 0x14);
+ uint32_t x39 = ((uint32_t)x37 & 0xfffff);
+ uint64_t x40 = (x38 + x36);
+ uint64_t x41 = (x40 >> 0x14);
+ uint32_t x42 = ((uint32_t)x40 & 0xfffff);
+ uint64_t x43 = (x41 + x35);
+ uint64_t x44 = (x43 >> 0x13);
+ uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
+ uint64_t x46 = (x44 + x34);
+ uint64_t x47 = (x46 >> 0x14);
+ uint32_t x48 = ((uint32_t)x46 & 0xfffff);
+ uint64_t x49 = (x47 + x33);
+ uint64_t x50 = (x49 >> 0x14);
+ uint32_t x51 = ((uint32_t)x49 & 0xfffff);
+ uint64_t x52 = (x50 + x32);
+ uint64_t x53 = (x52 >> 0x13);
+ uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
+ uint64_t x55 = (x53 + x31);
+ uint64_t x56 = (x55 >> 0x14);
+ uint32_t x57 = ((uint32_t)x55 & 0xfffff);
+ uint64_t x58 = (x56 + x30);
+ uint64_t x59 = (x58 >> 0x13);
+ uint32_t x60 = ((uint32_t)x58 & 0x7ffff);
+ uint64_t x61 = (x59 + x29);
+ uint64_t x62 = (x61 >> 0x14);
+ uint32_t x63 = ((uint32_t)x61 & 0xfffff);
+ uint64_t x64 = (x62 + x28);
+ uint64_t x65 = (x64 >> 0x14);
+ uint32_t x66 = ((uint32_t)x64 & 0xfffff);
+ uint64_t x67 = (x65 + x27);
+ uint64_t x68 = (x67 >> 0x13);
+ uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
+ uint64_t x70 = (x68 + x26);
+ uint64_t x71 = (x70 >> 0x14);
+ uint32_t x72 = ((uint32_t)x70 & 0xfffff);
+ uint64_t x73 = (x71 + x25);
+ uint32_t x74 = (uint32_t) (x73 >> 0x13);
+ uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
+ uint64_t x76 = (x39 + ((uint64_t)0x2fd * x74));
+ uint32_t x77 = (uint32_t) (x76 >> 0x14);
+ uint32_t x78 = ((uint32_t)x76 & 0xfffff);
+ uint32_t x79 = (x77 + x42);
+ uint32_t x80 = (x79 >> 0x14);
+ uint32_t x81 = (x79 & 0xfffff);
+ return (Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, (x80 + x45), Return x81, Return x78))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesub.c b/src/Specific/solinas32_2e255m765_13limbs/fesub.c
new file mode 100644
index 000000000..61c2ba339
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesub.c
@@ -0,0 +1,42 @@
+static void fesub(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = ((Const 2095622 + x5) - x29);
+ out[1] = ((0x1ffffe + x7) - x31);
+ out[2] = ((0xffffe + x9) - x33);
+ out[3] = ((0x1ffffe + x11) - x35);
+ out[4] = ((0x1ffffe + x13) - x37);
+ out[5] = ((0xffffe + x15) - x39);
+ out[6] = ((0x1ffffe + x17) - x41);
+ out[7] = ((0xffffe + x19) - x43);
+ out[8] = ((0x1ffffe + x21) - x45);
+ out[9] = ((0x1ffffe + x23) - x47);
+ out[10] = ((0xffffe + x25) - x49);
+ out[11] = ((0x1ffffe + x27) - x51);
+ out[12] = ((0xffffe + x26) - x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.log b/src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.log
new file mode 100644
index 000000000..e5821879c
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ (((0xffffe + x26) - x50), ((0x1ffffe + x27) - x51), ((0xffffe + x25) - x49), ((0x1ffffe + x23) - x47), ((0x1ffffe + x21) - x45), ((0xffffe + x19) - x43), ((0x1ffffe + x17) - x41), ((0xffffe + x15) - x39), ((0x1ffffe + x13) - x37), ((0x1ffffe + x11) - x35), ((0xffffe + x9) - x33), ((0x1ffffe + x7) - x31), ((Const 2095622 + x5) - x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765_13limbs/freeze.c b/src/Specific/solinas32_2e255m765_13limbs/freeze.c
new file mode 100644
index 000000000..cac26d29f
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/freeze.c
@@ -0,0 +1,69 @@
+static void freeze(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 1047811);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0xfffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x7ffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0xfffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0xfffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x7ffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0xfffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x7ffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0xfffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0xfffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x7ffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0xfffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x7ffff);
+ { uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ { uint32_t x65 = (x64 & Const 1047811);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ { uint32_t x69 = (x64 & 0xfffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ { uint32_t x73 = (x64 & 0x7ffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ { uint32_t x77 = (x64 & 0xfffff);
+ { uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ { uint32_t x81 = (x64 & 0xfffff);
+ { uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ { uint32_t x85 = (x64 & 0x7ffff);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ { uint32_t x89 = (x64 & 0xfffff);
+ { uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ { uint32_t x93 = (x64 & 0x7ffff);
+ { uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ { uint32_t x97 = (x64 & 0xfffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ { uint32_t x101 = (x64 & 0xfffff);
+ { uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ { uint32_t x105 = (x64 & 0x7ffff);
+ { uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ { uint32_t x109 = (x64 & 0xfffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ { uint32_t x113 = (x64 & 0x7ffff);
+ { uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ out[0] = x67;
+ out[1] = x71;
+ out[2] = x75;
+ out[3] = x79;
+ out[4] = x83;
+ out[5] = x87;
+ out[6] = x91;
+ out[7] = x95;
+ out[8] = x99;
+ out[9] = x103;
+ out[10] = x107;
+ out[11] = x111;
+ out[12] = x115;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.log b/src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.log
new file mode 100644
index 000000000..3aa88aa52
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.log
@@ -0,0 +1,47 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 1047811);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0xfffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x7ffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0xfffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0xfffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x7ffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0xfffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x7ffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0xfffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0xfffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x7ffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0xfffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x7ffff);
+ uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ uint32_t x65 = (x64 & Const 1047811);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ uint32_t x69 = (x64 & 0xfffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ uint32_t x73 = (x64 & 0x7ffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ uint32_t x77 = (x64 & 0xfffff);
+ uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ uint32_t x81 = (x64 & 0xfffff);
+ uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ uint32_t x85 = (x64 & 0x7ffff);
+ uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ uint32_t x89 = (x64 & 0xfffff);
+ uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ uint32_t x93 = (x64 & 0x7ffff);
+ uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ uint32_t x97 = (x64 & 0xfffff);
+ uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ uint32_t x101 = (x64 & 0xfffff);
+ uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ uint32_t x105 = (x64 & 0x7ffff);
+ uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ uint32_t x109 = (x64 & 0xfffff);
+ uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ uint32_t x113 = (x64 & 0x7ffff);
+ uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ (Return x115, Return x111, Return x107, Return x103, Return x99, Return x95, Return x91, Return x87, Return x83, Return x79, Return x75, Return x71, Return x67))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189_11limbs/feadd.c b/src/Specific/solinas32_2e256m189_11limbs/feadd.c
new file mode 100644
index 000000000..1763e8727
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.log b/src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..433ecbc2e
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189_11limbs/femul.c b/src/Specific/solinas32_2e256m189_11limbs/femul.c
new file mode 100644
index 000000000..b3e2fc368
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ { uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0xbd * ((uint64_t)x22 * x42)));
+ { uint64_t x46 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x21 * x25))))))))) + (0xbd * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
+ { uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0xbd * ((0x2 * ((uint64_t)x21 * x42)) + ((0x2 * ((uint64_t)x23 * x43)) + (0x2 * ((uint64_t)x22 * x41))))));
+ { uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0xbd * (((uint64_t)x19 * x42) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((uint64_t)x22 * x39))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0xbd * (((uint64_t)x17 * x42) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((uint64_t)x22 * x37)))))));
+ { uint64_t x50 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((uint64_t)x13 * x25))))) + (0xbd * (((uint64_t)x15 * x42) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((uint64_t)x22 * x35))))))));
+ { uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0xbd * ((0x2 * ((uint64_t)x13 * x42)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + (0x2 * ((uint64_t)x22 * x33))))))))));
+ { uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0xbd * (((uint64_t)x11 * x42) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((uint64_t)x22 * x31))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0xbd * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + ((0x2 * ((uint64_t)x21 * x33)) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
+ { uint64_t x54 = (((uint64_t)x5 * x25) + (0xbd * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (x54 >> 0x18);
+ { uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ { uint64_t x57 = (x55 + x53);
+ { uint64_t x58 = (x57 >> 0x17);
+ { uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
+ { uint64_t x60 = (x58 + x52);
+ { uint64_t x61 = (x60 >> 0x17);
+ { uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ { uint64_t x63 = (x61 + x51);
+ { uint64_t x64 = (x63 >> 0x18);
+ { uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ { uint64_t x66 = (x64 + x50);
+ { uint64_t x67 = (x66 >> 0x17);
+ { uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
+ { uint64_t x69 = (x67 + x49);
+ { uint64_t x70 = (x69 >> 0x17);
+ { uint32_t x71 = ((uint32_t)x69 & 0x7fffff);
+ { uint64_t x72 = (x70 + x48);
+ { uint64_t x73 = (x72 >> 0x17);
+ { uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
+ { uint64_t x75 = (x73 + x47);
+ { uint64_t x76 = (x75 >> 0x18);
+ { uint32_t x77 = ((uint32_t)x75 & 0xffffff);
+ { uint64_t x78 = (x76 + x46);
+ { uint64_t x79 = (x78 >> 0x17);
+ { uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
+ { uint64_t x81 = (x79 + x45);
+ { uint64_t x82 = (x81 >> 0x17);
+ { uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
+ { uint64_t x84 = (x82 + x44);
+ { uint32_t x85 = (uint32_t) (x84 >> 0x17);
+ { uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
+ { uint64_t x87 = (x56 + ((uint64_t)0xbd * x85));
+ { uint32_t x88 = (uint32_t) (x87 >> 0x18);
+ { uint32_t x89 = ((uint32_t)x87 & 0xffffff);
+ { uint32_t x90 = (x88 + x59);
+ { uint32_t x91 = (x90 >> 0x17);
+ { uint32_t x92 = (x90 & 0x7fffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e256m189_11limbs/femulDisplay.log b/src/Specific/solinas32_2e256m189_11limbs/femulDisplay.log
new file mode 100644
index 000000000..2e301007e
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0xbd * ((uint64_t)x22 * x42)));
+ uint64_t x46 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + ((0x2 * ((uint64_t)x13 * x33)) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x21 * x25))))))))) + (0xbd * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
+ uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0xbd * ((0x2 * ((uint64_t)x21 * x42)) + ((0x2 * ((uint64_t)x23 * x43)) + (0x2 * ((uint64_t)x22 * x41))))));
+ uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0xbd * (((uint64_t)x19 * x42) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((uint64_t)x22 * x39))))));
+ uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0xbd * (((uint64_t)x17 * x42) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((uint64_t)x22 * x37)))))));
+ uint64_t x50 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((uint64_t)x13 * x25))))) + (0xbd * (((uint64_t)x15 * x42) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((uint64_t)x22 * x35))))))));
+ uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0xbd * ((0x2 * ((uint64_t)x13 * x42)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + (0x2 * ((uint64_t)x22 * x33))))))))));
+ uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0xbd * (((uint64_t)x11 * x42) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((uint64_t)x22 * x31))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0xbd * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + ((0x2 * ((uint64_t)x21 * x33)) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
+ uint64_t x54 = (((uint64_t)x5 * x25) + (0xbd * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ uint64_t x55 = (x54 >> 0x18);
+ uint32_t x56 = ((uint32_t)x54 & 0xffffff);
+ uint64_t x57 = (x55 + x53);
+ uint64_t x58 = (x57 >> 0x17);
+ uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
+ uint64_t x60 = (x58 + x52);
+ uint64_t x61 = (x60 >> 0x17);
+ uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
+ uint64_t x63 = (x61 + x51);
+ uint64_t x64 = (x63 >> 0x18);
+ uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ uint64_t x66 = (x64 + x50);
+ uint64_t x67 = (x66 >> 0x17);
+ uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
+ uint64_t x69 = (x67 + x49);
+ uint64_t x70 = (x69 >> 0x17);
+ uint32_t x71 = ((uint32_t)x69 & 0x7fffff);
+ uint64_t x72 = (x70 + x48);
+ uint64_t x73 = (x72 >> 0x17);
+ uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
+ uint64_t x75 = (x73 + x47);
+ uint64_t x76 = (x75 >> 0x18);
+ uint32_t x77 = ((uint32_t)x75 & 0xffffff);
+ uint64_t x78 = (x76 + x46);
+ uint64_t x79 = (x78 >> 0x17);
+ uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
+ uint64_t x81 = (x79 + x45);
+ uint64_t x82 = (x81 >> 0x17);
+ uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
+ uint64_t x84 = (x82 + x44);
+ uint32_t x85 = (uint32_t) (x84 >> 0x17);
+ uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
+ uint64_t x87 = (x56 + ((uint64_t)0xbd * x85));
+ uint32_t x88 = (uint32_t) (x87 >> 0x18);
+ uint32_t x89 = ((uint32_t)x87 & 0xffffff);
+ uint32_t x90 = (x88 + x59);
+ uint32_t x91 = (x90 >> 0x17);
+ uint32_t x92 = (x90 & 0x7fffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesquare.c b/src/Specific/solinas32_2e256m189_11limbs/fesquare.c
new file mode 100644
index 000000000..a9b151b23
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xbd * ((uint64_t)x19 * x19)));
+ { uint64_t x23 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xbd * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
+ { uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xbd * ((0x2 * ((uint64_t)x18 * x19)) + ((0x2 * ((uint64_t)x20 * x20)) + (0x2 * ((uint64_t)x19 * x18))))));
+ { uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xbd * (((uint64_t)x16 * x19) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((uint64_t)x19 * x16))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xbd * (((uint64_t)x14 * x19) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + ((uint64_t)x19 * x14)))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xbd * (((uint64_t)x12 * x19) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((uint64_t)x19 * x12))))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbd * ((0x2 * ((uint64_t)x10 * x19)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (0x2 * ((uint64_t)x19 * x10))))))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xbd * (((uint64_t)x8 * x19) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((uint64_t)x19 * x8))))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbd * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
+ { uint64_t x31 = (((uint64_t)x2 * x2) + (0xbd * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (x31 >> 0x18);
+ { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ { uint64_t x34 = (x32 + x30);
+ { uint64_t x35 = (x34 >> 0x17);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ { uint64_t x37 = (x35 + x29);
+ { uint64_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ { uint64_t x40 = (x38 + x28);
+ { uint64_t x41 = (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x27);
+ { uint64_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x26);
+ { uint64_t x47 = (x46 >> 0x17);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ { uint64_t x49 = (x47 + x25);
+ { uint64_t x50 = (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x50 + x24);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x23);
+ { uint64_t x56 = (x55 >> 0x17);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ { uint64_t x58 = (x56 + x22);
+ { uint64_t x59 = (x58 >> 0x17);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ { uint64_t x61 = (x59 + x21);
+ { uint32_t x62 = (uint32_t) (x61 >> 0x17);
+ { uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
+ { uint64_t x64 = (x33 + ((uint64_t)0xbd * x62));
+ { uint32_t x65 = (uint32_t) (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint32_t x67 = (x65 + x36);
+ { uint32_t x68 = (x67 >> 0x17);
+ { uint32_t x69 = (x67 & 0x7fffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.log b/src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..245b4e992
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xbd * ((uint64_t)x19 * x19)));
+ uint64_t x23 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xbd * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
+ uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xbd * ((0x2 * ((uint64_t)x18 * x19)) + ((0x2 * ((uint64_t)x20 * x20)) + (0x2 * ((uint64_t)x19 * x18))))));
+ uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xbd * (((uint64_t)x16 * x19) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((uint64_t)x19 * x16))))));
+ uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xbd * (((uint64_t)x14 * x19) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + ((uint64_t)x19 * x14)))))));
+ uint64_t x27 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xbd * (((uint64_t)x12 * x19) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((uint64_t)x19 * x12))))))));
+ uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbd * ((0x2 * ((uint64_t)x10 * x19)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (0x2 * ((uint64_t)x19 * x10))))))))));
+ uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xbd * (((uint64_t)x8 * x19) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((uint64_t)x19 * x8))))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbd * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
+ uint64_t x31 = (((uint64_t)x2 * x2) + (0xbd * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ uint64_t x32 = (x31 >> 0x18);
+ uint32_t x33 = ((uint32_t)x31 & 0xffffff);
+ uint64_t x34 = (x32 + x30);
+ uint64_t x35 = (x34 >> 0x17);
+ uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
+ uint64_t x37 = (x35 + x29);
+ uint64_t x38 = (x37 >> 0x17);
+ uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
+ uint64_t x40 = (x38 + x28);
+ uint64_t x41 = (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x27);
+ uint64_t x44 = (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x26);
+ uint64_t x47 = (x46 >> 0x17);
+ uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
+ uint64_t x49 = (x47 + x25);
+ uint64_t x50 = (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x50 + x24);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x23);
+ uint64_t x56 = (x55 >> 0x17);
+ uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ uint64_t x58 = (x56 + x22);
+ uint64_t x59 = (x58 >> 0x17);
+ uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ uint64_t x61 = (x59 + x21);
+ uint32_t x62 = (uint32_t) (x61 >> 0x17);
+ uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
+ uint64_t x64 = (x33 + ((uint64_t)0xbd * x62));
+ uint32_t x65 = (uint32_t) (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint32_t x67 = (x65 + x36);
+ uint32_t x68 = (x67 >> 0x17);
+ uint32_t x69 = (x67 & 0x7fffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesub.c b/src/Specific/solinas32_2e256m189_11limbs/fesub.c
new file mode 100644
index 000000000..01f1fa61c
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = ((Const 33554054 + x5) - x25);
+ out[1] = ((0xfffffe + x7) - x27);
+ out[2] = ((0xfffffe + x9) - x29);
+ out[3] = ((0x1fffffe + x11) - x31);
+ out[4] = ((0xfffffe + x13) - x33);
+ out[5] = ((0xfffffe + x15) - x35);
+ out[6] = ((0xfffffe + x17) - x37);
+ out[7] = ((0x1fffffe + x19) - x39);
+ out[8] = ((0xfffffe + x21) - x41);
+ out[9] = ((0xfffffe + x23) - x43);
+ out[10] = ((0xfffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.log b/src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..26c38cf5d
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0xfffffe + x22) - x42), ((0xfffffe + x23) - x43), ((0xfffffe + x21) - x41), ((0x1fffffe + x19) - x39), ((0xfffffe + x17) - x37), ((0xfffffe + x15) - x35), ((0xfffffe + x13) - x33), ((0x1fffffe + x11) - x31), ((0xfffffe + x9) - x29), ((0xfffffe + x7) - x27), ((Const 33554054 + x5) - x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189_11limbs/freeze.c b/src/Specific/solinas32_2e256m189_11limbs/freeze.c
new file mode 100644
index 000000000..74bef3f18
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777027);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0xffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0xffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7fffff);
+ { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ { uint32_t x55 = (x54 & Const 16777027);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint32_t x59 = (x54 & 0x7fffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint32_t x63 = (x54 & 0x7fffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint32_t x67 = (x54 & 0xffffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint32_t x71 = (x54 & 0x7fffff);
+ { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint32_t x75 = (x54 & 0x7fffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint32_t x79 = (x54 & 0x7fffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint32_t x83 = (x54 & 0xffffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint32_t x87 = (x54 & 0x7fffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint32_t x91 = (x54 & 0x7fffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint32_t x95 = (x54 & 0x7fffff);
+ { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.log b/src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..da22292fc
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777027);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0xffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0xffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7fffff);
+ uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ uint32_t x55 = (x54 & Const 16777027);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint32_t x59 = (x54 & 0x7fffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint32_t x63 = (x54 & 0x7fffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint32_t x67 = (x54 & 0xffffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint32_t x71 = (x54 & 0x7fffff);
+ uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint32_t x75 = (x54 & 0x7fffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint32_t x79 = (x54 & 0x7fffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint32_t x83 = (x54 & 0xffffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint32_t x87 = (x54 & 0x7fffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint32_t x91 = (x54 & 0x7fffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint32_t x95 = (x54 & 0x7fffff);
+ uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_10limbs/feadd.c b/src/Specific/solinas32_2e266m3_10limbs/feadd.c
new file mode 100644
index 000000000..57dd4e1af
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.log b/src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..8a4c51148
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_10limbs/femul.c b/src/Specific/solinas32_2e266m3_10limbs/femul.c
new file mode 100644
index 000000000..b7f9d9745
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/femul.c
@@ -0,0 +1,78 @@
+static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ { uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
+ { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x3 * (0x2 * ((uint64_t)x20 * x38))));
+ { uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x3 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ { uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x3 * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
+ { uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x3 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
+ { uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x38)) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (0x2 * ((uint64_t)x20 * x31)))))))));
+ { uint64_t x47 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (0x3 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
+ { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x3 * ((0x2 * ((uint64_t)x9 * x38)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + (0x2 * ((uint64_t)x20 * x27)))))))))));
+ { uint64_t x49 = (((uint64_t)x5 * x23) + (0x3 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ { uint64_t x50 = (x49 >> 0x1b);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ { uint64_t x52 = (x50 + x48);
+ { uint64_t x53 = (x52 >> 0x1b);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ { uint64_t x55 = (x53 + x47);
+ { uint64_t x56 = (x55 >> 0x1a);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ { uint64_t x58 = (x56 + x46);
+ { uint64_t x59 = (x58 >> 0x1b);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ { uint64_t x61 = (x59 + x45);
+ { uint64_t x62 = (x61 >> 0x1a);
+ { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ { uint64_t x64 = (x62 + x44);
+ { uint64_t x65 = (x64 >> 0x1b);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ { uint64_t x67 = (x65 + x43);
+ { uint64_t x68 = (x67 >> 0x1b);
+ { uint32_t x69 = ((uint32_t)x67 & 0x7ffffff);
+ { uint64_t x70 = (x68 + x42);
+ { uint64_t x71 = (x70 >> 0x1a);
+ { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ { uint64_t x73 = (x71 + x41);
+ { uint64_t x74 = (x73 >> 0x1b);
+ { uint32_t x75 = ((uint32_t)x73 & 0x7ffffff);
+ { uint64_t x76 = (x74 + x40);
+ { uint64_t x77 = (x76 >> 0x1a);
+ { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ { uint64_t x79 = (x51 + (0x3 * x77));
+ { uint32_t x80 = (uint32_t) (x79 >> 0x1b);
+ { uint32_t x81 = ((uint32_t)x79 & 0x7ffffff);
+ { uint32_t x82 = (x80 + x54);
+ { uint32_t x83 = (x82 >> 0x1b);
+ { uint32_t x84 = (x82 & 0x7ffffff);
+ out[0] = x81;
+ out[1] = x84;
+ out[2] = (x83 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_10limbs/femulDisplay.log b/src/Specific/solinas32_2e266m3_10limbs/femulDisplay.log
new file mode 100644
index 000000000..2048703e9
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/femulDisplay.log
@@ -0,0 +1,52 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
+ uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x3 * (0x2 * ((uint64_t)x20 * x38))));
+ uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x3 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
+ uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((0x2 * ((uint64_t)x9 * x31)) + (((uint64_t)x11 * x29) + ((0x2 * ((uint64_t)x13 * x27)) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x3 * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
+ uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))));
+ uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((0x2 * ((uint64_t)x9 * x27)) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x3 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
+ uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x38)) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (0x2 * ((uint64_t)x20 * x31)))))))));
+ uint64_t x47 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (0x3 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
+ uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x3 * ((0x2 * ((uint64_t)x9 * x38)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + (0x2 * ((uint64_t)x20 * x27)))))))))));
+ uint64_t x49 = (((uint64_t)x5 * x23) + (0x3 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
+ uint64_t x50 = (x49 >> 0x1b);
+ uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ uint64_t x52 = (x50 + x48);
+ uint64_t x53 = (x52 >> 0x1b);
+ uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ uint64_t x55 = (x53 + x47);
+ uint64_t x56 = (x55 >> 0x1a);
+ uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ uint64_t x58 = (x56 + x46);
+ uint64_t x59 = (x58 >> 0x1b);
+ uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ uint64_t x61 = (x59 + x45);
+ uint64_t x62 = (x61 >> 0x1a);
+ uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ uint64_t x64 = (x62 + x44);
+ uint64_t x65 = (x64 >> 0x1b);
+ uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ uint64_t x67 = (x65 + x43);
+ uint64_t x68 = (x67 >> 0x1b);
+ uint32_t x69 = ((uint32_t)x67 & 0x7ffffff);
+ uint64_t x70 = (x68 + x42);
+ uint64_t x71 = (x70 >> 0x1a);
+ uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ uint64_t x73 = (x71 + x41);
+ uint64_t x74 = (x73 >> 0x1b);
+ uint32_t x75 = ((uint32_t)x73 & 0x7ffffff);
+ uint64_t x76 = (x74 + x40);
+ uint64_t x77 = (x76 >> 0x1a);
+ uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ uint64_t x79 = (x51 + (0x3 * x77));
+ uint32_t x80 = (uint32_t) (x79 >> 0x1b);
+ uint32_t x81 = ((uint32_t)x79 & 0x7ffffff);
+ uint32_t x82 = (x80 + x54);
+ uint32_t x83 = (x82 >> 0x1b);
+ uint32_t x84 = (x82 & 0x7ffffff);
+ return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesquare.c b/src/Specific/solinas32_2e266m3_10limbs/fesquare.c
new file mode 100644
index 000000000..9bc27311c
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesquare.c
@@ -0,0 +1,68 @@
+static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
+ { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * (0x2 * ((uint64_t)x17 * x17))));
+ { uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ { uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
+ { uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
+ { uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x17)) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (0x2 * ((uint64_t)x17 * x10)))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x17)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (0x2 * ((uint64_t)x17 * x6)))))))))));
+ { uint64_t x28 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ { uint64_t x29 = (x28 >> 0x1b);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ { uint64_t x31 = (x29 + x27);
+ { uint64_t x32 = (x31 >> 0x1b);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ { uint64_t x34 = (x32 + x26);
+ { uint64_t x35 = (x34 >> 0x1a);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ { uint64_t x37 = (x35 + x25);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ { uint64_t x40 = (x38 + x24);
+ { uint64_t x41 = (x40 >> 0x1a);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ { uint64_t x43 = (x41 + x23);
+ { uint64_t x44 = (x43 >> 0x1b);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ { uint64_t x46 = (x44 + x22);
+ { uint64_t x47 = (x46 >> 0x1b);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ { uint64_t x49 = (x47 + x21);
+ { uint64_t x50 = (x49 >> 0x1a);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ { uint64_t x52 = (x50 + x20);
+ { uint64_t x53 = (x52 >> 0x1b);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ { uint64_t x55 = (x53 + x19);
+ { uint64_t x56 = (x55 >> 0x1a);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ { uint64_t x58 = (x30 + (0x3 * x56));
+ { uint32_t x59 = (uint32_t) (x58 >> 0x1b);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ { uint32_t x61 = (x59 + x33);
+ { uint32_t x62 = (x61 >> 0x1b);
+ { uint32_t x63 = (x61 & 0x7ffffff);
+ out[0] = x60;
+ out[1] = x63;
+ out[2] = (x62 + x36);
+ out[3] = x39;
+ out[4] = x42;
+ out[5] = x45;
+ out[6] = x48;
+ out[7] = x51;
+ out[8] = x54;
+ out[9] = x57;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.log b/src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..045ee5ab4
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.log
@@ -0,0 +1,52 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
+ uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * (0x2 * ((uint64_t)x17 * x17))));
+ uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
+ uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
+ uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))));
+ uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
+ uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x17)) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (0x2 * ((uint64_t)x17 * x10)))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
+ uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x17)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (0x2 * ((uint64_t)x17 * x6)))))))))));
+ uint64_t x28 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
+ uint64_t x29 = (x28 >> 0x1b);
+ uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ uint64_t x31 = (x29 + x27);
+ uint64_t x32 = (x31 >> 0x1b);
+ uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ uint64_t x34 = (x32 + x26);
+ uint64_t x35 = (x34 >> 0x1a);
+ uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ uint64_t x37 = (x35 + x25);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ uint64_t x40 = (x38 + x24);
+ uint64_t x41 = (x40 >> 0x1a);
+ uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ uint64_t x43 = (x41 + x23);
+ uint64_t x44 = (x43 >> 0x1b);
+ uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ uint64_t x46 = (x44 + x22);
+ uint64_t x47 = (x46 >> 0x1b);
+ uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ uint64_t x49 = (x47 + x21);
+ uint64_t x50 = (x49 >> 0x1a);
+ uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ uint64_t x52 = (x50 + x20);
+ uint64_t x53 = (x52 >> 0x1b);
+ uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ uint64_t x55 = (x53 + x19);
+ uint64_t x56 = (x55 >> 0x1a);
+ uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ uint64_t x58 = (x30 + (0x3 * x56));
+ uint32_t x59 = (uint32_t) (x58 >> 0x1b);
+ uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ uint32_t x61 = (x59 + x33);
+ uint32_t x62 = (x61 >> 0x1b);
+ uint32_t x63 = (x61 & 0x7ffffff);
+ return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesub.c b/src/Specific/solinas32_2e266m3_10limbs/fesub.c
new file mode 100644
index 000000000..39be5cafe
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x38 = in2[9];
+ { const uint32_t x39 = in2[8];
+ { const uint32_t x37 = in2[7];
+ { const uint32_t x35 = in2[6];
+ { const uint32_t x33 = in2[5];
+ { const uint32_t x31 = in2[4];
+ { const uint32_t x29 = in2[3];
+ { const uint32_t x27 = in2[2];
+ { const uint32_t x25 = in2[1];
+ { const uint32_t x23 = in2[0];
+ out[0] = ((Const 268435450 + x5) - x23);
+ out[1] = ((0xffffffe + x7) - x25);
+ out[2] = ((0x7fffffe + x9) - x27);
+ out[3] = ((0xffffffe + x11) - x29);
+ out[4] = ((0x7fffffe + x13) - x31);
+ out[5] = ((0xffffffe + x15) - x33);
+ out[6] = ((0xffffffe + x17) - x35);
+ out[7] = ((0x7fffffe + x19) - x37);
+ out[8] = ((0xffffffe + x21) - x39);
+ out[9] = ((0x7fffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.log b/src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..662f6d638
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x7fffffe + x20) - x38), ((0xffffffe + x21) - x39), ((0x7fffffe + x19) - x37), ((0xffffffe + x17) - x35), ((0xffffffe + x15) - x33), ((0x7fffffe + x13) - x31), ((0xffffffe + x11) - x29), ((0x7fffffe + x9) - x27), ((0xffffffe + x7) - x25), ((Const 268435450 + x5) - x23)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_10limbs/freeze.c b/src/Specific/solinas32_2e266m3_10limbs/freeze.c
new file mode 100644
index 000000000..9013b9870
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint32_t out[10], const uint32_t in1[10]) {
+ { const uint32_t x17 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 134217725);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7ffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3ffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3ffffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7ffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7ffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3ffffff);
+ { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ { uint32_t x50 = (x49 & Const 134217725);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint32_t x54 = (x49 & 0x7ffffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint32_t x58 = (x49 & 0x3ffffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint32_t x62 = (x49 & 0x7ffffff);
+ { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint32_t x66 = (x49 & 0x3ffffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint32_t x70 = (x49 & 0x7ffffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint32_t x74 = (x49 & 0x7ffffff);
+ { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint32_t x78 = (x49 & 0x3ffffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint32_t x82 = (x49 & 0x7ffffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint32_t x86 = (x49 & 0x3ffffff);
+ { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.log b/src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..d47baf70f
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 134217725);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7ffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3ffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3ffffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7ffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7ffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3ffffff);
+ uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
+ uint32_t x50 = (x49 & Const 134217725);
+ uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint32_t x54 = (x49 & 0x7ffffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint32_t x58 = (x49 & 0x3ffffff);
+ uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint32_t x62 = (x49 & 0x7ffffff);
+ uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint32_t x66 = (x49 & 0x3ffffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint32_t x70 = (x49 & 0x7ffffff);
+ uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint32_t x74 = (x49 & 0x7ffffff);
+ uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint32_t x78 = (x49 & 0x3ffffff);
+ uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint32_t x82 = (x49 & 0x7ffffff);
+ uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint32_t x86 = (x49 & 0x3ffffff);
+ uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_11limbs/feadd.c b/src/Specific/solinas32_2e266m3_11limbs/feadd.c
new file mode 100644
index 000000000..1763e8727
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.log b/src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..433ecbc2e
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_11limbs/femul.c b/src/Specific/solinas32_2e266m3_11limbs/femul.c
new file mode 100644
index 000000000..adb205f40
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ { uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0x3 * ((uint64_t)x22 * x42)));
+ { uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x3 * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
+ { uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0x3 * (((uint64_t)x21 * x42) + (((uint64_t)x23 * x43) + ((uint64_t)x22 * x41)))));
+ { uint64_t x48 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((uint64_t)x17 * x25))))))) + (0x3 * (((uint64_t)x19 * x42) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x22 * x39))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x42)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (0x2 * ((uint64_t)x22 * x37))))))));
+ { uint64_t x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) + (0x3 * (((uint64_t)x15 * x42) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x22 * x35))))))));
+ { uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0x3 * (((uint64_t)x13 * x42) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (((uint64_t)x23 * x35) + ((uint64_t)x22 * x33)))))))));
+ { uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0x3 * (((uint64_t)x11 * x42) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x22 * x31))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x3 * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
+ { uint64_t x54 = (((uint64_t)x5 * x25) + (0x3 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (x54 >> 0x19);
+ { uint32_t x56 = ((uint32_t)x54 & 0x1ffffff);
+ { uint64_t x57 = (x55 + x53);
+ { uint64_t x58 = (x57 >> 0x18);
+ { uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ { uint64_t x60 = (x58 + x52);
+ { uint64_t x61 = (x60 >> 0x18);
+ { uint32_t x62 = ((uint32_t)x60 & 0xffffff);
+ { uint64_t x63 = (x61 + x51);
+ { uint64_t x64 = (x63 >> 0x18);
+ { uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ { uint64_t x66 = (x64 + x50);
+ { uint64_t x67 = (x66 >> 0x18);
+ { uint32_t x68 = ((uint32_t)x66 & 0xffffff);
+ { uint64_t x69 = (x67 + x49);
+ { uint64_t x70 = (x69 >> 0x19);
+ { uint32_t x71 = ((uint32_t)x69 & 0x1ffffff);
+ { uint64_t x72 = (x70 + x48);
+ { uint64_t x73 = (x72 >> 0x18);
+ { uint32_t x74 = ((uint32_t)x72 & 0xffffff);
+ { uint64_t x75 = (x73 + x47);
+ { uint64_t x76 = (x75 >> 0x18);
+ { uint32_t x77 = ((uint32_t)x75 & 0xffffff);
+ { uint64_t x78 = (x76 + x46);
+ { uint64_t x79 = (x78 >> 0x18);
+ { uint32_t x80 = ((uint32_t)x78 & 0xffffff);
+ { uint64_t x81 = (x79 + x45);
+ { uint64_t x82 = (x81 >> 0x18);
+ { uint32_t x83 = ((uint32_t)x81 & 0xffffff);
+ { uint64_t x84 = (x82 + x44);
+ { uint64_t x85 = (x84 >> 0x18);
+ { uint32_t x86 = ((uint32_t)x84 & 0xffffff);
+ { uint64_t x87 = (x56 + (0x3 * x85));
+ { uint32_t x88 = (uint32_t) (x87 >> 0x19);
+ { uint32_t x89 = ((uint32_t)x87 & 0x1ffffff);
+ { uint32_t x90 = (x88 + x59);
+ { uint32_t x91 = (x90 >> 0x18);
+ { uint32_t x92 = (x90 & 0xffffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_11limbs/femulDisplay.log b/src/Specific/solinas32_2e266m3_11limbs/femulDisplay.log
new file mode 100644
index 000000000..8dd11d0a9
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0x3 * ((uint64_t)x22 * x42)));
+ uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x3 * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
+ uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0x3 * (((uint64_t)x21 * x42) + (((uint64_t)x23 * x43) + ((uint64_t)x22 * x41)))));
+ uint64_t x48 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((uint64_t)x17 * x25))))))) + (0x3 * (((uint64_t)x19 * x42) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x22 * x39))))));
+ uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x42)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (0x2 * ((uint64_t)x22 * x37))))))));
+ uint64_t x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) + (0x3 * (((uint64_t)x15 * x42) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x22 * x35))))))));
+ uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0x3 * (((uint64_t)x13 * x42) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (((uint64_t)x23 * x35) + ((uint64_t)x22 * x33)))))))));
+ uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0x3 * (((uint64_t)x11 * x42) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x22 * x31))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x3 * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
+ uint64_t x54 = (((uint64_t)x5 * x25) + (0x3 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ uint64_t x55 = (x54 >> 0x19);
+ uint32_t x56 = ((uint32_t)x54 & 0x1ffffff);
+ uint64_t x57 = (x55 + x53);
+ uint64_t x58 = (x57 >> 0x18);
+ uint32_t x59 = ((uint32_t)x57 & 0xffffff);
+ uint64_t x60 = (x58 + x52);
+ uint64_t x61 = (x60 >> 0x18);
+ uint32_t x62 = ((uint32_t)x60 & 0xffffff);
+ uint64_t x63 = (x61 + x51);
+ uint64_t x64 = (x63 >> 0x18);
+ uint32_t x65 = ((uint32_t)x63 & 0xffffff);
+ uint64_t x66 = (x64 + x50);
+ uint64_t x67 = (x66 >> 0x18);
+ uint32_t x68 = ((uint32_t)x66 & 0xffffff);
+ uint64_t x69 = (x67 + x49);
+ uint64_t x70 = (x69 >> 0x19);
+ uint32_t x71 = ((uint32_t)x69 & 0x1ffffff);
+ uint64_t x72 = (x70 + x48);
+ uint64_t x73 = (x72 >> 0x18);
+ uint32_t x74 = ((uint32_t)x72 & 0xffffff);
+ uint64_t x75 = (x73 + x47);
+ uint64_t x76 = (x75 >> 0x18);
+ uint32_t x77 = ((uint32_t)x75 & 0xffffff);
+ uint64_t x78 = (x76 + x46);
+ uint64_t x79 = (x78 >> 0x18);
+ uint32_t x80 = ((uint32_t)x78 & 0xffffff);
+ uint64_t x81 = (x79 + x45);
+ uint64_t x82 = (x81 >> 0x18);
+ uint32_t x83 = ((uint32_t)x81 & 0xffffff);
+ uint64_t x84 = (x82 + x44);
+ uint64_t x85 = (x84 >> 0x18);
+ uint32_t x86 = ((uint32_t)x84 & 0xffffff);
+ uint64_t x87 = (x56 + (0x3 * x85));
+ uint32_t x88 = (uint32_t) (x87 >> 0x19);
+ uint32_t x89 = ((uint32_t)x87 & 0x1ffffff);
+ uint32_t x90 = (x88 + x59);
+ uint32_t x91 = (x90 >> 0x18);
+ uint32_t x92 = (x90 & 0xffffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesquare.c b/src/Specific/solinas32_2e266m3_11limbs/fesquare.c
new file mode 100644
index 000000000..4541c198b
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x3 * ((uint64_t)x19 * x19)));
+ { uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
+ { uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x19) + (((uint64_t)x20 * x20) + ((uint64_t)x19 * x18)))));
+ { uint64_t x25 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x19) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x19 * x16))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x19)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (0x2 * ((uint64_t)x19 * x14))))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x19) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((uint64_t)x19 * x12))))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x19) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + ((uint64_t)x19 * x10)))))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x19) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((uint64_t)x19 * x8))))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
+ { uint64_t x31 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x32 + x30);
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x29);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x28);
+ { uint64_t x41 = (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x27);
+ { uint64_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x44 + x26);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x25);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x24);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x23);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x56 + x22);
+ { uint64_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ { uint64_t x61 = (x59 + x21);
+ { uint64_t x62 = (x61 >> 0x18);
+ { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ { uint64_t x64 = (x33 + (0x3 * x62));
+ { uint32_t x65 = (uint32_t) (x64 >> 0x19);
+ { uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
+ { uint32_t x67 = (x65 + x36);
+ { uint32_t x68 = (x67 >> 0x18);
+ { uint32_t x69 = (x67 & 0xffffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.log b/src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..177226479
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x3 * ((uint64_t)x19 * x19)));
+ uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
+ uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x19) + (((uint64_t)x20 * x20) + ((uint64_t)x19 * x18)))));
+ uint64_t x25 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x19) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x19 * x16))))));
+ uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x19)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (0x2 * ((uint64_t)x19 * x14))))))));
+ uint64_t x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x19) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((uint64_t)x19 * x12))))))));
+ uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x19) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + ((uint64_t)x19 * x10)))))))));
+ uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x19) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((uint64_t)x19 * x8))))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
+ uint64_t x31 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ uint64_t x32 = (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x32 + x30);
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x29);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x28);
+ uint64_t x41 = (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x27);
+ uint64_t x44 = (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x44 + x26);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x25);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x24);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x23);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x56 + x22);
+ uint64_t x59 = (x58 >> 0x18);
+ uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ uint64_t x61 = (x59 + x21);
+ uint64_t x62 = (x61 >> 0x18);
+ uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ uint64_t x64 = (x33 + (0x3 * x62));
+ uint32_t x65 = (uint32_t) (x64 >> 0x19);
+ uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
+ uint32_t x67 = (x65 + x36);
+ uint32_t x68 = (x67 >> 0x18);
+ uint32_t x69 = (x67 & 0xffffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesub.c b/src/Specific/solinas32_2e266m3_11limbs/fesub.c
new file mode 100644
index 000000000..d750fd6c4
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = ((0x3fffffa + x5) - x25);
+ out[1] = ((0x1fffffe + x7) - x27);
+ out[2] = ((0x1fffffe + x9) - x29);
+ out[3] = ((0x1fffffe + x11) - x31);
+ out[4] = ((0x1fffffe + x13) - x33);
+ out[5] = ((0x3fffffe + x15) - x35);
+ out[6] = ((0x1fffffe + x17) - x37);
+ out[7] = ((0x1fffffe + x19) - x39);
+ out[8] = ((0x1fffffe + x21) - x41);
+ out[9] = ((0x1fffffe + x23) - x43);
+ out[10] = ((0x1fffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.log b/src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..3c0a629e3
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0x1fffffe + x22) - x42), ((0x1fffffe + x23) - x43), ((0x1fffffe + x21) - x41), ((0x1fffffe + x19) - x39), ((0x1fffffe + x17) - x37), ((0x3fffffe + x15) - x35), ((0x1fffffe + x13) - x33), ((0x1fffffe + x11) - x31), ((0x1fffffe + x9) - x29), ((0x1fffffe + x7) - x27), ((0x3fffffa + x5) - x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3_11limbs/freeze.c b/src/Specific/solinas32_2e266m3_11limbs/freeze.c
new file mode 100644
index 000000000..c030a2c02
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x22, uint8_t x23 = 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 x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0xffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0xffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0xffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0xffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x1ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0xffffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0xffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0xffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0xffffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0xffffff);
+ { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ { uint32_t x55 = (x54 & 0x1fffffd);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint32_t x59 = (x54 & 0xffffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint32_t x63 = (x54 & 0xffffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint32_t x67 = (x54 & 0xffffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint32_t x71 = (x54 & 0xffffff);
+ { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint32_t x75 = (x54 & 0x1ffffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint32_t x79 = (x54 & 0xffffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint32_t x83 = (x54 & 0xffffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint32_t x87 = (x54 & 0xffffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint32_t x91 = (x54 & 0xffffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint32_t x95 = (x54 & 0xffffff);
+ { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.log b/src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..fbfc11b1c
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, 0x1fffffd);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0xffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0xffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0xffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0xffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x1ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0xffffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0xffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0xffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0xffffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0xffffff);
+ uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ uint32_t x55 = (x54 & 0x1fffffd);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint32_t x59 = (x54 & 0xffffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint32_t x63 = (x54 & 0xffffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint32_t x67 = (x54 & 0xffffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint32_t x71 = (x54 & 0xffffff);
+ uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint32_t x75 = (x54 & 0x1ffffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint32_t x79 = (x54 & 0xffffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint32_t x83 = (x54 & 0xffffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint32_t x87 = (x54 & 0xffffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint32_t x91 = (x54 & 0xffffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint32_t x95 = (x54 & 0xffffff);
+ uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_11limbs/feadd.c b/src/Specific/solinas32_2e285m9_11limbs/feadd.c
new file mode 100644
index 000000000..1763e8727
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.log b/src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..433ecbc2e
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_11limbs/femul.c b/src/Specific/solinas32_2e285m9_11limbs/femul.c
new file mode 100644
index 000000000..bc8435d1c
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ { uint64_t x44 = (((uint64_t)x5 * x42) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + (((uint64_t)x23 * x27) + ((uint64_t)x22 * x25)))))))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x23 * x25)))))))))) + (0x9 * (0x2 * ((uint64_t)x22 * x42))));
+ { uint64_t x46 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x21 * x25))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x42)) + (0x2 * ((uint64_t)x22 * x43)))));
+ { uint64_t x47 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x19 * x25)))))))) + (0x9 * ((0x2 * ((uint64_t)x21 * x42)) + ((0x2 * ((uint64_t)x23 * x43)) + (0x2 * ((uint64_t)x22 * x41))))));
+ { uint64_t x48 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((uint64_t)x17 * x25))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x42)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (0x2 * ((uint64_t)x22 * x39)))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((uint64_t)x15 * x25)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x42)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (0x2 * ((uint64_t)x22 * x37))))))));
+ { uint64_t x50 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((uint64_t)x13 * x25))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x42)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + (0x2 * ((uint64_t)x22 * x35)))))))));
+ { uint64_t x51 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((uint64_t)x11 * x25)))) + (0x9 * ((0x2 * ((uint64_t)x13 * x42)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + (0x2 * ((uint64_t)x22 * x33))))))))));
+ { uint64_t x52 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((uint64_t)x9 * x25))) + (0x9 * ((0x2 * ((uint64_t)x11 * x42)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (0x2 * ((uint64_t)x22 * x31)))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x9 * ((0x2 * ((uint64_t)x9 * x42)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + (0x2 * ((uint64_t)x22 * x29))))))))))));
+ { uint64_t x54 = (((uint64_t)x5 * x25) + (0x9 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (x54 >> 0x1a);
+ { uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
+ { uint64_t x57 = (x55 + x53);
+ { uint64_t x58 = (x57 >> 0x1a);
+ { uint32_t x59 = ((uint32_t)x57 & 0x3ffffff);
+ { uint64_t x60 = (x58 + x52);
+ { uint64_t x61 = (x60 >> 0x1a);
+ { uint32_t x62 = ((uint32_t)x60 & 0x3ffffff);
+ { uint64_t x63 = (x61 + x51);
+ { uint64_t x64 = (x63 >> 0x1a);
+ { uint32_t x65 = ((uint32_t)x63 & 0x3ffffff);
+ { uint64_t x66 = (x64 + x50);
+ { uint64_t x67 = (x66 >> 0x1a);
+ { uint32_t x68 = ((uint32_t)x66 & 0x3ffffff);
+ { uint64_t x69 = (x67 + x49);
+ { uint64_t x70 = (x69 >> 0x1a);
+ { uint32_t x71 = ((uint32_t)x69 & 0x3ffffff);
+ { uint64_t x72 = (x70 + x48);
+ { uint64_t x73 = (x72 >> 0x1a);
+ { uint32_t x74 = ((uint32_t)x72 & 0x3ffffff);
+ { uint64_t x75 = (x73 + x47);
+ { uint64_t x76 = (x75 >> 0x1a);
+ { uint32_t x77 = ((uint32_t)x75 & 0x3ffffff);
+ { uint64_t x78 = (x76 + x46);
+ { uint64_t x79 = (x78 >> 0x1a);
+ { uint32_t x80 = ((uint32_t)x78 & 0x3ffffff);
+ { uint64_t x81 = (x79 + x45);
+ { uint64_t x82 = (x81 >> 0x1a);
+ { uint32_t x83 = ((uint32_t)x81 & 0x3ffffff);
+ { uint64_t x84 = (x82 + x44);
+ { uint64_t x85 = (x84 >> 0x19);
+ { uint32_t x86 = ((uint32_t)x84 & 0x1ffffff);
+ { uint64_t x87 = (x56 + (0x9 * x85));
+ { uint32_t x88 = (uint32_t) (x87 >> 0x1a);
+ { uint32_t x89 = ((uint32_t)x87 & 0x3ffffff);
+ { uint32_t x90 = (x88 + x59);
+ { uint32_t x91 = (x90 >> 0x1a);
+ { uint32_t x92 = (x90 & 0x3ffffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_11limbs/femulDisplay.log b/src/Specific/solinas32_2e285m9_11limbs/femulDisplay.log
new file mode 100644
index 000000000..16a3015c5
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint64_t x44 = (((uint64_t)x5 * x42) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + (((uint64_t)x23 * x27) + ((uint64_t)x22 * x25)))))))))));
+ uint64_t x45 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x23 * x25)))))))))) + (0x9 * (0x2 * ((uint64_t)x22 * x42))));
+ uint64_t x46 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x21 * x25))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x42)) + (0x2 * ((uint64_t)x22 * x43)))));
+ uint64_t x47 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x19 * x25)))))))) + (0x9 * ((0x2 * ((uint64_t)x21 * x42)) + ((0x2 * ((uint64_t)x23 * x43)) + (0x2 * ((uint64_t)x22 * x41))))));
+ uint64_t x48 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((uint64_t)x17 * x25))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x42)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (0x2 * ((uint64_t)x22 * x39)))))));
+ uint64_t x49 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((uint64_t)x15 * x25)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x42)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (0x2 * ((uint64_t)x22 * x37))))))));
+ uint64_t x50 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + ((uint64_t)x13 * x25))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x42)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + (0x2 * ((uint64_t)x22 * x35)))))))));
+ uint64_t x51 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((uint64_t)x11 * x25)))) + (0x9 * ((0x2 * ((uint64_t)x13 * x42)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + (0x2 * ((uint64_t)x22 * x33))))))))));
+ uint64_t x52 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + ((uint64_t)x9 * x25))) + (0x9 * ((0x2 * ((uint64_t)x11 * x42)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (0x2 * ((uint64_t)x22 * x31)))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x9 * ((0x2 * ((uint64_t)x9 * x42)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + (0x2 * ((uint64_t)x22 * x29))))))))))));
+ uint64_t x54 = (((uint64_t)x5 * x25) + (0x9 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ uint64_t x55 = (x54 >> 0x1a);
+ uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
+ uint64_t x57 = (x55 + x53);
+ uint64_t x58 = (x57 >> 0x1a);
+ uint32_t x59 = ((uint32_t)x57 & 0x3ffffff);
+ uint64_t x60 = (x58 + x52);
+ uint64_t x61 = (x60 >> 0x1a);
+ uint32_t x62 = ((uint32_t)x60 & 0x3ffffff);
+ uint64_t x63 = (x61 + x51);
+ uint64_t x64 = (x63 >> 0x1a);
+ uint32_t x65 = ((uint32_t)x63 & 0x3ffffff);
+ uint64_t x66 = (x64 + x50);
+ uint64_t x67 = (x66 >> 0x1a);
+ uint32_t x68 = ((uint32_t)x66 & 0x3ffffff);
+ uint64_t x69 = (x67 + x49);
+ uint64_t x70 = (x69 >> 0x1a);
+ uint32_t x71 = ((uint32_t)x69 & 0x3ffffff);
+ uint64_t x72 = (x70 + x48);
+ uint64_t x73 = (x72 >> 0x1a);
+ uint32_t x74 = ((uint32_t)x72 & 0x3ffffff);
+ uint64_t x75 = (x73 + x47);
+ uint64_t x76 = (x75 >> 0x1a);
+ uint32_t x77 = ((uint32_t)x75 & 0x3ffffff);
+ uint64_t x78 = (x76 + x46);
+ uint64_t x79 = (x78 >> 0x1a);
+ uint32_t x80 = ((uint32_t)x78 & 0x3ffffff);
+ uint64_t x81 = (x79 + x45);
+ uint64_t x82 = (x81 >> 0x1a);
+ uint32_t x83 = ((uint32_t)x81 & 0x3ffffff);
+ uint64_t x84 = (x82 + x44);
+ uint64_t x85 = (x84 >> 0x19);
+ uint32_t x86 = ((uint32_t)x84 & 0x1ffffff);
+ uint64_t x87 = (x56 + (0x9 * x85));
+ uint32_t x88 = (uint32_t) (x87 >> 0x1a);
+ uint32_t x89 = ((uint32_t)x87 & 0x3ffffff);
+ uint32_t x90 = (x88 + x59);
+ uint32_t x91 = (x90 >> 0x1a);
+ uint32_t x92 = (x90 & 0x3ffffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesquare.c b/src/Specific/solinas32_2e285m9_11limbs/fesquare.c
new file mode 100644
index 000000000..946053ad5
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x21 = (((uint64_t)x2 * x19) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x19 * x2)))))))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (0x2 * ((uint64_t)x19 * x19))));
+ { uint64_t x23 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x19)) + (0x2 * ((uint64_t)x19 * x20)))));
+ { uint64_t x24 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((0x2 * ((uint64_t)x18 * x19)) + ((0x2 * ((uint64_t)x20 * x20)) + (0x2 * ((uint64_t)x19 * x18))))));
+ { uint64_t x25 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x19)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (0x2 * ((uint64_t)x19 * x16)))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x19)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (0x2 * ((uint64_t)x19 * x14))))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x19)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (0x2 * ((uint64_t)x19 * x12)))))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint64_t)x10 * x19)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (0x2 * ((uint64_t)x19 * x10))))))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x19)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (0x2 * ((uint64_t)x19 * x8)))))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x19)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + (0x2 * ((uint64_t)x19 * x6))))))))))));
+ { uint64_t x31 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (x31 >> 0x1a);
+ { uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
+ { uint64_t x34 = (x32 + x30);
+ { uint64_t x35 = (x34 >> 0x1a);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ { uint64_t x37 = (x35 + x29);
+ { uint64_t x38 = (x37 >> 0x1a);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ { uint64_t x40 = (x38 + x28);
+ { uint64_t x41 = (x40 >> 0x1a);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ { uint64_t x43 = (x41 + x27);
+ { uint64_t x44 = (x43 >> 0x1a);
+ { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ { uint64_t x46 = (x44 + x26);
+ { uint64_t x47 = (x46 >> 0x1a);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ { uint64_t x49 = (x47 + x25);
+ { uint64_t x50 = (x49 >> 0x1a);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ { uint64_t x52 = (x50 + x24);
+ { uint64_t x53 = (x52 >> 0x1a);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ { uint64_t x55 = (x53 + x23);
+ { uint64_t x56 = (x55 >> 0x1a);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ { uint64_t x58 = (x56 + x22);
+ { uint64_t x59 = (x58 >> 0x1a);
+ { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ { uint64_t x61 = (x59 + x21);
+ { uint64_t x62 = (x61 >> 0x19);
+ { uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ { uint64_t x64 = (x33 + (0x9 * x62));
+ { uint32_t x65 = (uint32_t) (x64 >> 0x1a);
+ { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ { uint32_t x67 = (x65 + x36);
+ { uint32_t x68 = (x67 >> 0x1a);
+ { uint32_t x69 = (x67 & 0x3ffffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.log b/src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..bb4abd070
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x21 = (((uint64_t)x2 * x19) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x19 * x2)))))))))));
+ uint64_t x22 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (0x2 * ((uint64_t)x19 * x19))));
+ uint64_t x23 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x19)) + (0x2 * ((uint64_t)x19 * x20)))));
+ uint64_t x24 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((0x2 * ((uint64_t)x18 * x19)) + ((0x2 * ((uint64_t)x20 * x20)) + (0x2 * ((uint64_t)x19 * x18))))));
+ uint64_t x25 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x19)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (0x2 * ((uint64_t)x19 * x16)))))));
+ uint64_t x26 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x19)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (0x2 * ((uint64_t)x19 * x14))))))));
+ uint64_t x27 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x19)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (0x2 * ((uint64_t)x19 * x12)))))))));
+ uint64_t x28 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint64_t)x10 * x19)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (0x2 * ((uint64_t)x19 * x10))))))))));
+ uint64_t x29 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x19)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (0x2 * ((uint64_t)x19 * x8)))))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x19)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + (0x2 * ((uint64_t)x19 * x6))))))))))));
+ uint64_t x31 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ uint64_t x32 = (x31 >> 0x1a);
+ uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
+ uint64_t x34 = (x32 + x30);
+ uint64_t x35 = (x34 >> 0x1a);
+ uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ uint64_t x37 = (x35 + x29);
+ uint64_t x38 = (x37 >> 0x1a);
+ uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ uint64_t x40 = (x38 + x28);
+ uint64_t x41 = (x40 >> 0x1a);
+ uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ uint64_t x43 = (x41 + x27);
+ uint64_t x44 = (x43 >> 0x1a);
+ uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ uint64_t x46 = (x44 + x26);
+ uint64_t x47 = (x46 >> 0x1a);
+ uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ uint64_t x49 = (x47 + x25);
+ uint64_t x50 = (x49 >> 0x1a);
+ uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ uint64_t x52 = (x50 + x24);
+ uint64_t x53 = (x52 >> 0x1a);
+ uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ uint64_t x55 = (x53 + x23);
+ uint64_t x56 = (x55 >> 0x1a);
+ uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ uint64_t x58 = (x56 + x22);
+ uint64_t x59 = (x58 >> 0x1a);
+ uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ uint64_t x61 = (x59 + x21);
+ uint64_t x62 = (x61 >> 0x19);
+ uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ uint64_t x64 = (x33 + (0x9 * x62));
+ uint32_t x65 = (uint32_t) (x64 >> 0x1a);
+ uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ uint32_t x67 = (x65 + x36);
+ uint32_t x68 = (x67 >> 0x1a);
+ uint32_t x69 = (x67 & 0x3ffffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesub.c b/src/Specific/solinas32_2e285m9_11limbs/fesub.c
new file mode 100644
index 000000000..807ea8e69
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = ((0x7ffffee + x5) - x25);
+ out[1] = ((0x7fffffe + x7) - x27);
+ out[2] = ((0x7fffffe + x9) - x29);
+ out[3] = ((0x7fffffe + x11) - x31);
+ out[4] = ((0x7fffffe + x13) - x33);
+ out[5] = ((0x7fffffe + x15) - x35);
+ out[6] = ((0x7fffffe + x17) - x37);
+ out[7] = ((0x7fffffe + x19) - x39);
+ out[8] = ((0x7fffffe + x21) - x41);
+ out[9] = ((0x7fffffe + x23) - x43);
+ out[10] = ((0x3fffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.log b/src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..3e919b374
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0x3fffffe + x22) - x42), ((0x7fffffe + x23) - x43), ((0x7fffffe + x21) - x41), ((0x7fffffe + x19) - x39), ((0x7fffffe + x17) - x37), ((0x7fffffe + x15) - x35), ((0x7fffffe + x13) - x33), ((0x7fffffe + x11) - x31), ((0x7fffffe + x9) - x29), ((0x7fffffe + x7) - x27), ((0x7ffffee + x5) - x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_11limbs/freeze.c b/src/Specific/solinas32_2e285m9_11limbs/freeze.c
new file mode 100644
index 000000000..4141edb68
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff7);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x3ffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x3ffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x3ffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x3ffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x3ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x3ffffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x3ffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x3ffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x3ffffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x1ffffff);
+ { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ { uint32_t x55 = (x54 & 0x3fffff7);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint32_t x59 = (x54 & 0x3ffffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint32_t x63 = (x54 & 0x3ffffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint32_t x67 = (x54 & 0x3ffffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint32_t x71 = (x54 & 0x3ffffff);
+ { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint32_t x75 = (x54 & 0x3ffffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint32_t x79 = (x54 & 0x3ffffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint32_t x83 = (x54 & 0x3ffffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint32_t x87 = (x54 & 0x3ffffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint32_t x91 = (x54 & 0x3ffffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint32_t x95 = (x54 & 0x1ffffff);
+ { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.log b/src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..58192bea0
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff7);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x3ffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x3ffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x3ffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x3ffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x3ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x3ffffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x3ffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x3ffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x3ffffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x1ffffff);
+ uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ uint32_t x55 = (x54 & 0x3fffff7);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint32_t x59 = (x54 & 0x3ffffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint32_t x63 = (x54 & 0x3ffffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint32_t x67 = (x54 & 0x3ffffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint32_t x71 = (x54 & 0x3ffffff);
+ uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint32_t x75 = (x54 & 0x3ffffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint32_t x79 = (x54 & 0x3ffffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint32_t x83 = (x54 & 0x3ffffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint32_t x87 = (x54 & 0x3ffffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint32_t x91 = (x54 & 0x3ffffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint32_t x95 = (x54 & 0x1ffffff);
+ uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_12limbs/feadd.c b/src/Specific/solinas32_2e285m9_12limbs/feadd.c
new file mode 100644
index 000000000..68eccd2bc
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/feadd.c
@@ -0,0 +1,39 @@
+static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ out[0] = (x5 + x27);
+ out[1] = (x7 + x29);
+ out[2] = (x9 + x31);
+ out[3] = (x11 + x33);
+ out[4] = (x13 + x35);
+ out[5] = (x15 + x37);
+ out[6] = (x17 + x39);
+ out[7] = (x19 + x41);
+ out[8] = (x21 + x43);
+ out[9] = (x23 + x45);
+ out[10] = (x25 + x47);
+ out[11] = (x24 + x46);
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.log b/src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.log
new file mode 100644
index 000000000..4109af59c
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_12limbs/femul.c b/src/Specific/solinas32_2e285m9_12limbs/femul.c
new file mode 100644
index 000000000..f8b4b9365
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/femul.c
@@ -0,0 +1,92 @@
+static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ { uint64_t x48 = (((uint64_t)x5 * x46) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + (((uint64_t)x25 * x29) + ((uint64_t)x24 * x27))))))))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0x9 * (0x2 * ((uint64_t)x24 * x46))));
+ { uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x9 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))));
+ { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
+ { uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x9 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x46)) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (0x2 * ((uint64_t)x24 * x41))))))));
+ { uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x46)) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + (0x2 * ((uint64_t)x24 * x39)))))))));
+ { uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
+ { uint64_t x56 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + ((uint64_t)x11 * x27)))) + (0x9 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
+ { uint64_t x57 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((uint64_t)x9 * x27))) + (0x9 * ((0x2 * ((uint64_t)x11 * x46)) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (0x2 * ((uint64_t)x24 * x33))))))))))));
+ { uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x9 * ((0x2 * ((uint64_t)x9 * x46)) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((0x2 * ((uint64_t)x25 * x33)) + (0x2 * ((uint64_t)x24 * x31)))))))))))));
+ { uint64_t x59 = (((uint64_t)x5 * x27) + (0x9 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
+ { uint64_t x60 = (x59 >> 0x18);
+ { uint32_t x61 = ((uint32_t)x59 & 0xffffff);
+ { uint64_t x62 = (x60 + x58);
+ { uint64_t x63 = (x62 >> 0x18);
+ { uint32_t x64 = ((uint32_t)x62 & 0xffffff);
+ { uint64_t x65 = (x63 + x57);
+ { uint64_t x66 = (x65 >> 0x18);
+ { uint32_t x67 = ((uint32_t)x65 & 0xffffff);
+ { uint64_t x68 = (x66 + x56);
+ { uint64_t x69 = (x68 >> 0x17);
+ { uint32_t x70 = ((uint32_t)x68 & 0x7fffff);
+ { uint64_t x71 = (x69 + x55);
+ { uint64_t x72 = (x71 >> 0x18);
+ { uint32_t x73 = ((uint32_t)x71 & 0xffffff);
+ { uint64_t x74 = (x72 + x54);
+ { uint64_t x75 = (x74 >> 0x18);
+ { uint32_t x76 = ((uint32_t)x74 & 0xffffff);
+ { uint64_t x77 = (x75 + x53);
+ { uint64_t x78 = (x77 >> 0x18);
+ { uint32_t x79 = ((uint32_t)x77 & 0xffffff);
+ { uint64_t x80 = (x78 + x52);
+ { uint64_t x81 = (x80 >> 0x17);
+ { uint32_t x82 = ((uint32_t)x80 & 0x7fffff);
+ { uint64_t x83 = (x81 + x51);
+ { uint64_t x84 = (x83 >> 0x18);
+ { uint32_t x85 = ((uint32_t)x83 & 0xffffff);
+ { uint64_t x86 = (x84 + x50);
+ { uint64_t x87 = (x86 >> 0x18);
+ { uint32_t x88 = ((uint32_t)x86 & 0xffffff);
+ { uint64_t x89 = (x87 + x49);
+ { uint32_t x90 = (uint32_t) (x89 >> 0x18);
+ { uint32_t x91 = ((uint32_t)x89 & 0xffffff);
+ { uint64_t x92 = (x90 + x48);
+ { uint32_t x93 = (uint32_t) (x92 >> 0x17);
+ { uint32_t x94 = ((uint32_t)x92 & 0x7fffff);
+ { uint64_t x95 = (x61 + ((uint64_t)0x9 * x93));
+ { uint32_t x96 = (uint32_t) (x95 >> 0x18);
+ { uint32_t x97 = ((uint32_t)x95 & 0xffffff);
+ { uint32_t x98 = (x96 + x64);
+ { uint32_t x99 = (x98 >> 0x18);
+ { uint32_t x100 = (x98 & 0xffffff);
+ out[0] = x97;
+ out[1] = x100;
+ out[2] = (x99 + x67);
+ out[3] = x70;
+ out[4] = x73;
+ out[5] = x76;
+ out[6] = x79;
+ out[7] = x82;
+ out[8] = x85;
+ out[9] = x88;
+ out[10] = x91;
+ out[11] = x94;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_12limbs/femulDisplay.log b/src/Specific/solinas32_2e285m9_12limbs/femulDisplay.log
new file mode 100644
index 000000000..a60b5f0d7
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/femulDisplay.log
@@ -0,0 +1,60 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ uint64_t x48 = (((uint64_t)x5 * x46) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + (((uint64_t)x25 * x29) + ((uint64_t)x24 * x27))))))))))));
+ uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0x9 * (0x2 * ((uint64_t)x24 * x46))));
+ uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x9 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))));
+ uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
+ uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x9 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
+ uint64_t x53 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x46)) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (0x2 * ((uint64_t)x24 * x41))))))));
+ uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x46)) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + (0x2 * ((uint64_t)x24 * x39)))))))));
+ uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
+ uint64_t x56 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + ((uint64_t)x11 * x27)))) + (0x9 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
+ uint64_t x57 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((uint64_t)x9 * x27))) + (0x9 * ((0x2 * ((uint64_t)x11 * x46)) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (0x2 * ((uint64_t)x24 * x33))))))))))));
+ uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x9 * ((0x2 * ((uint64_t)x9 * x46)) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((0x2 * ((uint64_t)x25 * x33)) + (0x2 * ((uint64_t)x24 * x31)))))))))))));
+ uint64_t x59 = (((uint64_t)x5 * x27) + (0x9 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
+ uint64_t x60 = (x59 >> 0x18);
+ uint32_t x61 = ((uint32_t)x59 & 0xffffff);
+ uint64_t x62 = (x60 + x58);
+ uint64_t x63 = (x62 >> 0x18);
+ uint32_t x64 = ((uint32_t)x62 & 0xffffff);
+ uint64_t x65 = (x63 + x57);
+ uint64_t x66 = (x65 >> 0x18);
+ uint32_t x67 = ((uint32_t)x65 & 0xffffff);
+ uint64_t x68 = (x66 + x56);
+ uint64_t x69 = (x68 >> 0x17);
+ uint32_t x70 = ((uint32_t)x68 & 0x7fffff);
+ uint64_t x71 = (x69 + x55);
+ uint64_t x72 = (x71 >> 0x18);
+ uint32_t x73 = ((uint32_t)x71 & 0xffffff);
+ uint64_t x74 = (x72 + x54);
+ uint64_t x75 = (x74 >> 0x18);
+ uint32_t x76 = ((uint32_t)x74 & 0xffffff);
+ uint64_t x77 = (x75 + x53);
+ uint64_t x78 = (x77 >> 0x18);
+ uint32_t x79 = ((uint32_t)x77 & 0xffffff);
+ uint64_t x80 = (x78 + x52);
+ uint64_t x81 = (x80 >> 0x17);
+ uint32_t x82 = ((uint32_t)x80 & 0x7fffff);
+ uint64_t x83 = (x81 + x51);
+ uint64_t x84 = (x83 >> 0x18);
+ uint32_t x85 = ((uint32_t)x83 & 0xffffff);
+ uint64_t x86 = (x84 + x50);
+ uint64_t x87 = (x86 >> 0x18);
+ uint32_t x88 = ((uint32_t)x86 & 0xffffff);
+ uint64_t x89 = (x87 + x49);
+ uint32_t x90 = (uint32_t) (x89 >> 0x18);
+ uint32_t x91 = ((uint32_t)x89 & 0xffffff);
+ uint64_t x92 = (x90 + x48);
+ uint32_t x93 = (uint32_t) (x92 >> 0x17);
+ uint32_t x94 = ((uint32_t)x92 & 0x7fffff);
+ uint64_t x95 = (x61 + ((uint64_t)0x9 * x93));
+ uint32_t x96 = (uint32_t) (x95 >> 0x18);
+ uint32_t x97 = ((uint32_t)x95 & 0xffffff);
+ uint32_t x98 = (x96 + x64);
+ uint32_t x99 = (x98 >> 0x18);
+ uint32_t x100 = (x98 & 0xffffff);
+ return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesquare.c b/src/Specific/solinas32_2e285m9_12limbs/fesquare.c
new file mode 100644
index 000000000..6c9e59538
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesquare.c
@@ -0,0 +1,80 @@
+static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
+ { const uint32_t x21 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x23 = (((uint64_t)x2 * x21) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x21 * x2))))))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (0x2 * ((uint64_t)x21 * x21))));
+ { uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))));
+ { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x21)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (0x2 * ((uint64_t)x21 * x16))))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x21)) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (0x2 * ((uint64_t)x21 * x14)))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
+ { uint64_t x31 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x21)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (0x2 * ((uint64_t)x21 * x8))))))))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x21)) + ((0x2 * ((uint64_t)x8 * x22)) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((0x2 * ((uint64_t)x22 * x8)) + (0x2 * ((uint64_t)x21 * x6)))))))))))));
+ { uint64_t x34 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
+ { uint64_t x35 = (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x18);
+ { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x18);
+ { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x17);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x27);
+ { uint64_t x56 = (x55 >> 0x17);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ { uint64_t x58 = (x56 + x26);
+ { uint64_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ { uint64_t x61 = (x59 + x25);
+ { uint64_t x62 = (x61 >> 0x18);
+ { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ { uint64_t x64 = (x62 + x24);
+ { uint32_t x65 = (uint32_t) (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint64_t x67 = (x65 + x23);
+ { uint32_t x68 = (uint32_t) (x67 >> 0x17);
+ { uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ { uint64_t x70 = (x36 + ((uint64_t)0x9 * x68));
+ { uint32_t x71 = (uint32_t) (x70 >> 0x18);
+ { uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ { uint32_t x73 = (x71 + x39);
+ { uint32_t x74 = (x73 >> 0x18);
+ { uint32_t x75 = (x73 & 0xffffff);
+ out[0] = x72;
+ out[1] = x75;
+ out[2] = (x74 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ out[7] = x57;
+ out[8] = x60;
+ out[9] = x63;
+ out[10] = x66;
+ out[11] = x69;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.log b/src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.log
new file mode 100644
index 000000000..29f0a72f5
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.log
@@ -0,0 +1,60 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x23 = (((uint64_t)x2 * x21) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x21 * x2))))))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (0x2 * ((uint64_t)x21 * x21))));
+ uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))));
+ uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
+ uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
+ uint64_t x28 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x21)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (0x2 * ((uint64_t)x21 * x16))))))));
+ uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x21)) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (0x2 * ((uint64_t)x21 * x14)))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
+ uint64_t x31 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x21)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (0x2 * ((uint64_t)x21 * x8))))))))))));
+ uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x21)) + ((0x2 * ((uint64_t)x8 * x22)) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((0x2 * ((uint64_t)x22 * x8)) + (0x2 * ((uint64_t)x21 * x6)))))))))))));
+ uint64_t x34 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
+ uint64_t x35 = (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x18);
+ uint32_t x39 = ((uint32_t)x37 & 0xffffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x18);
+ uint32_t x42 = ((uint32_t)x40 & 0xffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x17);
+ uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
+ uint64_t x46 = (x44 + x30);
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x29);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x28);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x27);
+ uint64_t x56 = (x55 >> 0x17);
+ uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ uint64_t x58 = (x56 + x26);
+ uint64_t x59 = (x58 >> 0x18);
+ uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ uint64_t x61 = (x59 + x25);
+ uint64_t x62 = (x61 >> 0x18);
+ uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ uint64_t x64 = (x62 + x24);
+ uint32_t x65 = (uint32_t) (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint64_t x67 = (x65 + x23);
+ uint32_t x68 = (uint32_t) (x67 >> 0x17);
+ uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ uint64_t x70 = (x36 + ((uint64_t)0x9 * x68));
+ uint32_t x71 = (uint32_t) (x70 >> 0x18);
+ uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ uint32_t x73 = (x71 + x39);
+ uint32_t x74 = (x73 >> 0x18);
+ uint32_t x75 = (x73 & 0xffffff);
+ return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesub.c b/src/Specific/solinas32_2e285m9_12limbs/fesub.c
new file mode 100644
index 000000000..1916eb3b0
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesub.c
@@ -0,0 +1,39 @@
+static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ out[0] = ((0x1ffffee + x5) - x27);
+ out[1] = ((0x1fffffe + x7) - x29);
+ out[2] = ((0x1fffffe + x9) - x31);
+ out[3] = ((0xfffffe + x11) - x33);
+ out[4] = ((0x1fffffe + x13) - x35);
+ out[5] = ((0x1fffffe + x15) - x37);
+ out[6] = ((0x1fffffe + x17) - x39);
+ out[7] = ((0xfffffe + x19) - x41);
+ out[8] = ((0x1fffffe + x21) - x43);
+ out[9] = ((0x1fffffe + x23) - x45);
+ out[10] = ((0x1fffffe + x25) - x47);
+ out[11] = ((0xfffffe + x24) - x46);
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.log b/src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.log
new file mode 100644
index 000000000..37fefb80a
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ (((0xfffffe + x24) - x46), ((0x1fffffe + x25) - x47), ((0x1fffffe + x23) - x45), ((0x1fffffe + x21) - x43), ((0xfffffe + x19) - x41), ((0x1fffffe + x17) - x39), ((0x1fffffe + x15) - x37), ((0x1fffffe + x13) - x35), ((0xfffffe + x11) - x33), ((0x1fffffe + x9) - x31), ((0x1fffffe + x7) - x29), ((0x1ffffee + x5) - x27)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9_12limbs/freeze.c b/src/Specific/solinas32_2e285m9_12limbs/freeze.c
new file mode 100644
index 000000000..68ad18f61
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/freeze.c
@@ -0,0 +1,64 @@
+static void freeze(uint32_t out[12], const uint32_t in1[12]) {
+ { const uint32_t x21 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x24, uint8_t x25 = 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 x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0xffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0xffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x7fffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0xffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0xffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0xffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x7fffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0xffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0xffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0xffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x7fffff);
+ { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
+ { uint32_t x60 = (x59 & 0xfffff7);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
+ { uint32_t x64 = (x59 & 0xffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
+ { uint32_t x68 = (x59 & 0xffffff);
+ { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
+ { uint32_t x72 = (x59 & 0x7fffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
+ { uint32_t x76 = (x59 & 0xffffff);
+ { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
+ { uint32_t x80 = (x59 & 0xffffff);
+ { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
+ { uint32_t x84 = (x59 & 0xffffff);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
+ { uint32_t x88 = (x59 & 0x7fffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
+ { uint32_t x92 = (x59 & 0xffffff);
+ { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
+ { uint32_t x96 = (x59 & 0xffffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
+ { uint32_t x100 = (x59 & 0xffffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
+ { uint32_t x104 = (x59 & 0x7fffff);
+ { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
+ out[0] = x62;
+ out[1] = x66;
+ out[2] = x70;
+ out[3] = x74;
+ out[4] = x78;
+ out[5] = x82;
+ out[6] = x86;
+ out[7] = x90;
+ out[8] = x94;
+ out[9] = x98;
+ out[10] = x102;
+ out[11] = x106;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.log b/src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.log
new file mode 100644
index 000000000..214de7886
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, 0xfffff7);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0xffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0xffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x7fffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0xffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0xffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0xffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x7fffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0xffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0xffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0xffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x7fffff);
+ uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
+ uint32_t x60 = (x59 & 0xfffff7);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
+ uint32_t x64 = (x59 & 0xffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
+ uint32_t x68 = (x59 & 0xffffff);
+ uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
+ uint32_t x72 = (x59 & 0x7fffff);
+ uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
+ uint32_t x76 = (x59 & 0xffffff);
+ uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
+ uint32_t x80 = (x59 & 0xffffff);
+ uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
+ uint32_t x84 = (x59 & 0xffffff);
+ uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
+ uint32_t x88 = (x59 & 0x7fffff);
+ uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
+ uint32_t x92 = (x59 & 0xffffff);
+ uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
+ uint32_t x96 = (x59 & 0xffffff);
+ uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
+ uint32_t x100 = (x59 & 0xffffff);
+ uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
+ uint32_t x104 = (x59 & 0x7fffff);
+ uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
+ (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19_11limbs/feadd.c b/src/Specific/solinas32_2e291m19_11limbs/feadd.c
new file mode 100644
index 000000000..1763e8727
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.log b/src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..433ecbc2e
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19_11limbs/femul.c b/src/Specific/solinas32_2e291m19_11limbs/femul.c
new file mode 100644
index 000000000..67a95148b
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ { uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + (((uint64_t)x9 * x41) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ { uint64_t x45 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x23 * x25)))))))))) + (0x13 * ((uint64_t)x22 * x42)));
+ { uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + (((uint64_t)x9 * x37) + ((0x2 * ((uint64_t)x11 * x35)) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x13 * ((0x2 * ((uint64_t)x23 * x42)) + (0x2 * ((uint64_t)x22 * x43)))));
+ { uint64_t x47 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x19 * x25)))))))) + (0x13 * (((uint64_t)x21 * x42) + ((0x2 * ((uint64_t)x23 * x43)) + ((uint64_t)x22 * x41)))));
+ { uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0x13 * ((0x2 * ((uint64_t)x19 * x42)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (0x2 * ((uint64_t)x22 * x39)))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((uint64_t)x15 * x25)))))) + (0x13 * (((uint64_t)x17 * x42) + ((0x2 * ((uint64_t)x19 * x43)) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((uint64_t)x22 * x37)))))));
+ { ℤ x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x15 * x42)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + (0x2 * ((uint64_t)x22 * x35)))))))));
+ { uint64_t x51 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((uint64_t)x11 * x25)))) + (0x13 * (((uint64_t)x13 * x42) + ((0x2 * ((uint64_t)x15 * x43)) + (((uint64_t)x17 * x41) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + ((0x2 * ((uint64_t)x23 * x35)) + ((uint64_t)x22 * x33)))))))));
+ { ℤ x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x11 * x42)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (0x2 * ((uint64_t)x22 * x31)))))))))));
+ { ℤ x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) +ℤ (0x13 *ℤ (((uint64_t)x9 * x42) + ((0x2 * ((uint64_t)x11 * x43)) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + ((0x2 * ((uint64_t)x23 * x31)) + ((uint64_t)x22 * x29)))))))))));
+ { ℤ x54 = (((uint64_t)x5 * x25) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (x54 >> 0x1b);
+ { uint32_t x56 = (x54 & 0x7ffffff);
+ { ℤ x57 = (x55 +ℤ x53);
+ { uint64_t x58 = (x57 >> 0x1a);
+ { uint32_t x59 = (x57 & 0x3ffffff);
+ { ℤ x60 = (x58 +ℤ x52);
+ { uint64_t x61 = (x60 >> 0x1b);
+ { uint32_t x62 = (x60 & 0x7ffffff);
+ { uint64_t x63 = (x61 + x51);
+ { uint64_t x64 = (x63 >> 0x1a);
+ { uint32_t x65 = ((uint32_t)x63 & 0x3ffffff);
+ { ℤ x66 = (x64 +ℤ x50);
+ { uint64_t x67 = (x66 >> 0x1b);
+ { uint32_t x68 = (x66 & 0x7ffffff);
+ { uint64_t x69 = (x67 + x49);
+ { uint64_t x70 = (x69 >> 0x1a);
+ { uint32_t x71 = ((uint32_t)x69 & 0x3ffffff);
+ { uint64_t x72 = (x70 + x48);
+ { uint64_t x73 = (x72 >> 0x1b);
+ { uint32_t x74 = ((uint32_t)x72 & 0x7ffffff);
+ { uint64_t x75 = (x73 + x47);
+ { uint64_t x76 = (x75 >> 0x1a);
+ { uint32_t x77 = ((uint32_t)x75 & 0x3ffffff);
+ { uint64_t x78 = (x76 + x46);
+ { uint64_t x79 = (x78 >> 0x1b);
+ { uint32_t x80 = ((uint32_t)x78 & 0x7ffffff);
+ { uint64_t x81 = (x79 + x45);
+ { uint64_t x82 = (x81 >> 0x1a);
+ { uint32_t x83 = ((uint32_t)x81 & 0x3ffffff);
+ { uint64_t x84 = (x82 + x44);
+ { uint64_t x85 = (x84 >> 0x1a);
+ { uint32_t x86 = ((uint32_t)x84 & 0x3ffffff);
+ { uint64_t x87 = (x56 + (0x13 * x85));
+ { uint32_t x88 = (uint32_t) (x87 >> 0x1b);
+ { uint32_t x89 = ((uint32_t)x87 & 0x7ffffff);
+ { uint32_t x90 = (x88 + x59);
+ { uint32_t x91 = (x90 >> 0x1a);
+ { uint32_t x92 = (x90 & 0x3ffffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e291m19_11limbs/femulDisplay.log b/src/Specific/solinas32_2e291m19_11limbs/femulDisplay.log
new file mode 100644
index 000000000..1c986d7a7
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + (((uint64_t)x9 * x41) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
+ uint64_t x45 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x23 * x25)))))))))) + (0x13 * ((uint64_t)x22 * x42)));
+ uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + (((uint64_t)x9 * x37) + ((0x2 * ((uint64_t)x11 * x35)) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + (((uint64_t)x17 * x29) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x13 * ((0x2 * ((uint64_t)x23 * x42)) + (0x2 * ((uint64_t)x22 * x43)))));
+ uint64_t x47 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x19 * x25)))))))) + (0x13 * (((uint64_t)x21 * x42) + ((0x2 * ((uint64_t)x23 * x43)) + ((uint64_t)x22 * x41)))));
+ uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0x13 * ((0x2 * ((uint64_t)x19 * x42)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (0x2 * ((uint64_t)x22 * x39)))))));
+ uint64_t x49 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + ((uint64_t)x15 * x25)))))) + (0x13 * (((uint64_t)x17 * x42) + ((0x2 * ((uint64_t)x19 * x43)) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((uint64_t)x22 * x37)))))));
+ ℤ x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + (((uint64_t)x9 * x29) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x15 * x42)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + (0x2 * ((uint64_t)x22 * x35)))))))));
+ uint64_t x51 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + ((uint64_t)x11 * x25)))) + (0x13 * (((uint64_t)x13 * x42) + ((0x2 * ((uint64_t)x15 * x43)) + (((uint64_t)x17 * x41) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + ((0x2 * ((uint64_t)x23 * x35)) + ((uint64_t)x22 * x33)))))))));
+ ℤ x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x11 * x42)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (0x2 * ((uint64_t)x22 * x31)))))))))));
+ ℤ x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) +ℤ (0x13 *ℤ (((uint64_t)x9 * x42) + ((0x2 * ((uint64_t)x11 * x43)) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + ((0x2 * ((uint64_t)x23 * x31)) + ((uint64_t)x22 * x29)))))))))));
+ ℤ x54 = (((uint64_t)x5 * x25) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
+ uint64_t x55 = (x54 >> 0x1b);
+ uint32_t x56 = (x54 & 0x7ffffff);
+ ℤ x57 = (x55 +ℤ x53);
+ uint64_t x58 = (x57 >> 0x1a);
+ uint32_t x59 = (x57 & 0x3ffffff);
+ ℤ x60 = (x58 +ℤ x52);
+ uint64_t x61 = (x60 >> 0x1b);
+ uint32_t x62 = (x60 & 0x7ffffff);
+ uint64_t x63 = (x61 + x51);
+ uint64_t x64 = (x63 >> 0x1a);
+ uint32_t x65 = ((uint32_t)x63 & 0x3ffffff);
+ ℤ x66 = (x64 +ℤ x50);
+ uint64_t x67 = (x66 >> 0x1b);
+ uint32_t x68 = (x66 & 0x7ffffff);
+ uint64_t x69 = (x67 + x49);
+ uint64_t x70 = (x69 >> 0x1a);
+ uint32_t x71 = ((uint32_t)x69 & 0x3ffffff);
+ uint64_t x72 = (x70 + x48);
+ uint64_t x73 = (x72 >> 0x1b);
+ uint32_t x74 = ((uint32_t)x72 & 0x7ffffff);
+ uint64_t x75 = (x73 + x47);
+ uint64_t x76 = (x75 >> 0x1a);
+ uint32_t x77 = ((uint32_t)x75 & 0x3ffffff);
+ uint64_t x78 = (x76 + x46);
+ uint64_t x79 = (x78 >> 0x1b);
+ uint32_t x80 = ((uint32_t)x78 & 0x7ffffff);
+ uint64_t x81 = (x79 + x45);
+ uint64_t x82 = (x81 >> 0x1a);
+ uint32_t x83 = ((uint32_t)x81 & 0x3ffffff);
+ uint64_t x84 = (x82 + x44);
+ uint64_t x85 = (x84 >> 0x1a);
+ uint32_t x86 = ((uint32_t)x84 & 0x3ffffff);
+ uint64_t x87 = (x56 + (0x13 * x85));
+ uint32_t x88 = (uint32_t) (x87 >> 0x1b);
+ uint32_t x89 = ((uint32_t)x87 & 0x7ffffff);
+ uint32_t x90 = (x88 + x59);
+ uint32_t x91 = (x90 >> 0x1a);
+ uint32_t x92 = (x90 & 0x3ffffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesquare.c b/src/Specific/solinas32_2e291m19_11limbs/fesquare.c
new file mode 100644
index 000000000..8c4a93c85
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ { uint64_t x22 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x13 * ((uint64_t)x19 * x19)));
+ { uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((0x2 * ((uint64_t)x20 * x19)) + (0x2 * ((uint64_t)x19 * x20)))));
+ { uint64_t x24 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x19) + ((0x2 * ((uint64_t)x20 * x20)) + ((uint64_t)x19 * x18)))));
+ { uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * ((0x2 * ((uint64_t)x16 * x19)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (0x2 * ((uint64_t)x19 * x16)))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x19) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((uint64_t)x19 * x14)))))));
+ { ℤ x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x12 * x19)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (0x2 * ((uint64_t)x19 * x12)))))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x19) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + ((uint64_t)x19 * x10)))))))));
+ { ℤ x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x8 * x19)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (0x2 * ((uint64_t)x19 * x8)))))))))));
+ { ℤ x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x13 *ℤ (((uint64_t)x6 * x19) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((uint64_t)x19 * x6)))))))))));
+ { ℤ x31 = (((uint64_t)x2 * x2) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (x31 >> 0x1b);
+ { uint32_t x33 = (x31 & 0x7ffffff);
+ { ℤ x34 = (x32 +ℤ x30);
+ { uint64_t x35 = (x34 >> 0x1a);
+ { uint32_t x36 = (x34 & 0x3ffffff);
+ { ℤ x37 = (x35 +ℤ x29);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = (x37 & 0x7ffffff);
+ { uint64_t x40 = (x38 + x28);
+ { uint64_t x41 = (x40 >> 0x1a);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ { ℤ x43 = (x41 +ℤ x27);
+ { uint64_t x44 = (x43 >> 0x1b);
+ { uint32_t x45 = (x43 & 0x7ffffff);
+ { uint64_t x46 = (x44 + x26);
+ { uint64_t x47 = (x46 >> 0x1a);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ { uint64_t x49 = (x47 + x25);
+ { uint64_t x50 = (x49 >> 0x1b);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ { uint64_t x52 = (x50 + x24);
+ { uint64_t x53 = (x52 >> 0x1a);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ { uint64_t x55 = (x53 + x23);
+ { uint64_t x56 = (x55 >> 0x1b);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
+ { uint64_t x58 = (x56 + x22);
+ { uint64_t x59 = (x58 >> 0x1a);
+ { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ { uint64_t x61 = (x59 + x21);
+ { uint64_t x62 = (x61 >> 0x1a);
+ { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ { uint64_t x64 = (x33 + (0x13 * x62));
+ { uint32_t x65 = (uint32_t) (x64 >> 0x1b);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ { uint32_t x67 = (x65 + x36);
+ { uint32_t x68 = (x67 >> 0x1a);
+ { uint32_t x69 = (x67 & 0x3ffffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.log b/src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..a6b916feb
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
+ uint64_t x22 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x13 * ((uint64_t)x19 * x19)));
+ uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((0x2 * ((uint64_t)x20 * x19)) + (0x2 * ((uint64_t)x19 * x20)))));
+ uint64_t x24 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x19) + ((0x2 * ((uint64_t)x20 * x20)) + ((uint64_t)x19 * x18)))));
+ uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * ((0x2 * ((uint64_t)x16 * x19)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (0x2 * ((uint64_t)x19 * x16)))))));
+ uint64_t x26 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x19) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((uint64_t)x19 * x14)))))));
+ ℤ x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x12 * x19)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (0x2 * ((uint64_t)x19 * x12)))))))));
+ uint64_t x28 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x19) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + ((uint64_t)x19 * x10)))))))));
+ ℤ x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x8 * x19)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (0x2 * ((uint64_t)x19 * x8)))))))))));
+ ℤ x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x13 *ℤ (((uint64_t)x6 * x19) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((uint64_t)x19 * x6)))))))))));
+ ℤ x31 = (((uint64_t)x2 * x2) +ℤ (0x13 *ℤ ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
+ uint64_t x32 = (x31 >> 0x1b);
+ uint32_t x33 = (x31 & 0x7ffffff);
+ ℤ x34 = (x32 +ℤ x30);
+ uint64_t x35 = (x34 >> 0x1a);
+ uint32_t x36 = (x34 & 0x3ffffff);
+ ℤ x37 = (x35 +ℤ x29);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = (x37 & 0x7ffffff);
+ uint64_t x40 = (x38 + x28);
+ uint64_t x41 = (x40 >> 0x1a);
+ uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ ℤ x43 = (x41 +ℤ x27);
+ uint64_t x44 = (x43 >> 0x1b);
+ uint32_t x45 = (x43 & 0x7ffffff);
+ uint64_t x46 = (x44 + x26);
+ uint64_t x47 = (x46 >> 0x1a);
+ uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ uint64_t x49 = (x47 + x25);
+ uint64_t x50 = (x49 >> 0x1b);
+ uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ uint64_t x52 = (x50 + x24);
+ uint64_t x53 = (x52 >> 0x1a);
+ uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ uint64_t x55 = (x53 + x23);
+ uint64_t x56 = (x55 >> 0x1b);
+ uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
+ uint64_t x58 = (x56 + x22);
+ uint64_t x59 = (x58 >> 0x1a);
+ uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ uint64_t x61 = (x59 + x21);
+ uint64_t x62 = (x61 >> 0x1a);
+ uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ uint64_t x64 = (x33 + (0x13 * x62));
+ uint32_t x65 = (uint32_t) (x64 >> 0x1b);
+ uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ uint32_t x67 = (x65 + x36);
+ uint32_t x68 = (x67 >> 0x1a);
+ uint32_t x69 = (x67 & 0x3ffffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesub.c b/src/Specific/solinas32_2e291m19_11limbs/fesub.c
new file mode 100644
index 000000000..d5048244c
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x42 = in2[10];
+ { const uint32_t x43 = in2[9];
+ { const uint32_t x41 = in2[8];
+ { const uint32_t x39 = in2[7];
+ { const uint32_t x37 = in2[6];
+ { const uint32_t x35 = in2[5];
+ { const uint32_t x33 = in2[4];
+ { const uint32_t x31 = in2[3];
+ { const uint32_t x29 = in2[2];
+ { const uint32_t x27 = in2[1];
+ { const uint32_t x25 = in2[0];
+ out[0] = ((Const 268435418 + x5) - x25);
+ out[1] = ((0x7fffffe + x7) - x27);
+ out[2] = ((0xffffffe + x9) - x29);
+ out[3] = ((0x7fffffe + x11) - x31);
+ out[4] = ((0xffffffe + x13) - x33);
+ out[5] = ((0x7fffffe + x15) - x35);
+ out[6] = ((0xffffffe + x17) - x37);
+ out[7] = ((0x7fffffe + x19) - x39);
+ out[8] = ((0xffffffe + x21) - x41);
+ out[9] = ((0x7fffffe + x23) - x43);
+ out[10] = ((0x7fffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.log b/src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..1f0729e42
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0x7fffffe + x22) - x42), ((0x7fffffe + x23) - x43), ((0xffffffe + x21) - x41), ((0x7fffffe + x19) - x39), ((0xffffffe + x17) - x37), ((0x7fffffe + x15) - x35), ((0xffffffe + x13) - x33), ((0x7fffffe + x11) - x31), ((0xffffffe + x9) - x29), ((0x7fffffe + x7) - x27), ((Const 268435418 + x5) - x25)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19_11limbs/freeze.c b/src/Specific/solinas32_2e291m19_11limbs/freeze.c
new file mode 100644
index 000000000..0ce7235e0
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint32_t out[11], const uint32_t in1[11]) {
+ { const uint32_t x19 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 134217709);
+ { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x3ffffff);
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7ffffff);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x3ffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7ffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x3ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7ffffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x3ffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7ffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x3ffffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x3ffffff);
+ { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ { uint32_t x55 = (x54 & Const 134217709);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint32_t x59 = (x54 & 0x3ffffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint32_t x63 = (x54 & 0x7ffffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint32_t x67 = (x54 & 0x3ffffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint32_t x71 = (x54 & 0x7ffffff);
+ { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint32_t x75 = (x54 & 0x3ffffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint32_t x79 = (x54 & 0x7ffffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint32_t x83 = (x54 & 0x3ffffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint32_t x87 = (x54 & 0x7ffffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint32_t x91 = (x54 & 0x3ffffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint32_t x95 = (x54 & 0x3ffffff);
+ { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.log b/src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..8b2eaf414
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ 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)) (0x0, Return x2, Const 134217709);
+ uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x3ffffff);
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7ffffff);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x3ffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7ffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x3ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7ffffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x3ffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7ffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x3ffffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x3ffffff);
+ uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
+ uint32_t x55 = (x54 & Const 134217709);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint32_t x59 = (x54 & 0x3ffffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint32_t x63 = (x54 & 0x7ffffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint32_t x67 = (x54 & 0x3ffffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint32_t x71 = (x54 & 0x7ffffff);
+ uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint32_t x75 = (x54 & 0x3ffffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint32_t x79 = (x54 & 0x7ffffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint32_t x83 = (x54 & 0x3ffffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint32_t x87 = (x54 & 0x7ffffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint32_t x91 = (x54 & 0x3ffffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint32_t x95 = (x54 & 0x3ffffff);
+ uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_12limbs/feadd.c b/src/Specific/solinas32_2e321m9_12limbs/feadd.c
new file mode 100644
index 000000000..68eccd2bc
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/feadd.c
@@ -0,0 +1,39 @@
+static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ out[0] = (x5 + x27);
+ out[1] = (x7 + x29);
+ out[2] = (x9 + x31);
+ out[3] = (x11 + x33);
+ out[4] = (x13 + x35);
+ out[5] = (x15 + x37);
+ out[6] = (x17 + x39);
+ out[7] = (x19 + x41);
+ out[8] = (x21 + x43);
+ out[9] = (x23 + x45);
+ out[10] = (x25 + x47);
+ out[11] = (x24 + x46);
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.log b/src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.log
new file mode 100644
index 000000000..4109af59c
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_12limbs/femul.c b/src/Specific/solinas32_2e321m9_12limbs/femul.c
new file mode 100644
index 000000000..382ef7b72
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/femul.c
@@ -0,0 +1,92 @@
+static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ { uint64_t x48 = (((uint64_t)x5 * x46) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + (((uint64_t)x25 * x29) + ((uint64_t)x24 * x27))))))))))));
+ { uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0x9 * (0x2 * ((uint64_t)x24 * x46))));
+ { uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x9 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))));
+ { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
+ { uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x9 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x46)) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (0x2 * ((uint64_t)x24 * x41))))))));
+ { uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x46)) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + (0x2 * ((uint64_t)x24 * x39)))))))));
+ { uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
+ { uint64_t x56 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + ((uint64_t)x11 * x27)))) + (0x9 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
+ { uint64_t x57 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((uint64_t)x9 * x27))) + (0x9 * ((0x2 * ((uint64_t)x11 * x46)) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (0x2 * ((uint64_t)x24 * x33))))))))))));
+ { ℤ x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x9 * x46)) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((0x2 * ((uint64_t)x25 * x33)) + (0x2 * ((uint64_t)x24 * x31)))))))))))));
+ { ℤ x59 = (((uint64_t)x5 * x27) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
+ { uint64_t x60 = (x59 >> 0x1b);
+ { uint32_t x61 = (x59 & 0x7ffffff);
+ { ℤ x62 = (x60 +ℤ x58);
+ { uint64_t x63 = (x62 >> 0x1b);
+ { uint32_t x64 = (x62 & 0x7ffffff);
+ { uint64_t x65 = (x63 + x57);
+ { uint64_t x66 = (x65 >> 0x1b);
+ { uint32_t x67 = ((uint32_t)x65 & 0x7ffffff);
+ { uint64_t x68 = (x66 + x56);
+ { uint64_t x69 = (x68 >> 0x1a);
+ { uint32_t x70 = ((uint32_t)x68 & 0x3ffffff);
+ { uint64_t x71 = (x69 + x55);
+ { uint64_t x72 = (x71 >> 0x1b);
+ { uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
+ { uint64_t x74 = (x72 + x54);
+ { uint64_t x75 = (x74 >> 0x1b);
+ { uint32_t x76 = ((uint32_t)x74 & 0x7ffffff);
+ { uint64_t x77 = (x75 + x53);
+ { uint64_t x78 = (x77 >> 0x1b);
+ { uint32_t x79 = ((uint32_t)x77 & 0x7ffffff);
+ { uint64_t x80 = (x78 + x52);
+ { uint64_t x81 = (x80 >> 0x1a);
+ { uint32_t x82 = ((uint32_t)x80 & 0x3ffffff);
+ { uint64_t x83 = (x81 + x51);
+ { uint64_t x84 = (x83 >> 0x1b);
+ { uint32_t x85 = ((uint32_t)x83 & 0x7ffffff);
+ { uint64_t x86 = (x84 + x50);
+ { uint64_t x87 = (x86 >> 0x1b);
+ { uint32_t x88 = ((uint32_t)x86 & 0x7ffffff);
+ { uint64_t x89 = (x87 + x49);
+ { uint64_t x90 = (x89 >> 0x1b);
+ { uint32_t x91 = ((uint32_t)x89 & 0x7ffffff);
+ { uint64_t x92 = (x90 + x48);
+ { uint64_t x93 = (x92 >> 0x1a);
+ { uint32_t x94 = ((uint32_t)x92 & 0x3ffffff);
+ { uint64_t x95 = (x61 + (0x9 * x93));
+ { uint32_t x96 = (uint32_t) (x95 >> 0x1b);
+ { uint32_t x97 = ((uint32_t)x95 & 0x7ffffff);
+ { uint32_t x98 = (x96 + x64);
+ { uint32_t x99 = (x98 >> 0x1b);
+ { uint32_t x100 = (x98 & 0x7ffffff);
+ out[0] = x97;
+ out[1] = x100;
+ out[2] = (x99 + x67);
+ out[3] = x70;
+ out[4] = x73;
+ out[5] = x76;
+ out[6] = x79;
+ out[7] = x82;
+ out[8] = x85;
+ out[9] = x88;
+ out[10] = x91;
+ out[11] = x94;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_12limbs/femulDisplay.log b/src/Specific/solinas32_2e321m9_12limbs/femulDisplay.log
new file mode 100644
index 000000000..d2a8abd3d
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/femulDisplay.log
@@ -0,0 +1,60 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ uint64_t x48 = (((uint64_t)x5 * x46) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + (((uint64_t)x25 * x29) + ((uint64_t)x24 * x27))))))))))));
+ uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0x9 * (0x2 * ((uint64_t)x24 * x46))));
+ uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x9 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))));
+ uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
+ uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x9 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
+ uint64_t x53 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27))))))) + (0x9 * ((0x2 * ((uint64_t)x19 * x46)) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (0x2 * ((uint64_t)x24 * x41))))))));
+ uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x46)) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + (0x2 * ((uint64_t)x24 * x39)))))))));
+ uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
+ uint64_t x56 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + ((uint64_t)x11 * x27)))) + (0x9 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
+ uint64_t x57 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((uint64_t)x9 * x27))) + (0x9 * ((0x2 * ((uint64_t)x11 * x46)) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (0x2 * ((uint64_t)x24 * x33))))))))))));
+ ℤ x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x9 * x46)) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((0x2 * ((uint64_t)x25 * x33)) + (0x2 * ((uint64_t)x24 * x31)))))))))))));
+ ℤ x59 = (((uint64_t)x5 * x27) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
+ uint64_t x60 = (x59 >> 0x1b);
+ uint32_t x61 = (x59 & 0x7ffffff);
+ ℤ x62 = (x60 +ℤ x58);
+ uint64_t x63 = (x62 >> 0x1b);
+ uint32_t x64 = (x62 & 0x7ffffff);
+ uint64_t x65 = (x63 + x57);
+ uint64_t x66 = (x65 >> 0x1b);
+ uint32_t x67 = ((uint32_t)x65 & 0x7ffffff);
+ uint64_t x68 = (x66 + x56);
+ uint64_t x69 = (x68 >> 0x1a);
+ uint32_t x70 = ((uint32_t)x68 & 0x3ffffff);
+ uint64_t x71 = (x69 + x55);
+ uint64_t x72 = (x71 >> 0x1b);
+ uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
+ uint64_t x74 = (x72 + x54);
+ uint64_t x75 = (x74 >> 0x1b);
+ uint32_t x76 = ((uint32_t)x74 & 0x7ffffff);
+ uint64_t x77 = (x75 + x53);
+ uint64_t x78 = (x77 >> 0x1b);
+ uint32_t x79 = ((uint32_t)x77 & 0x7ffffff);
+ uint64_t x80 = (x78 + x52);
+ uint64_t x81 = (x80 >> 0x1a);
+ uint32_t x82 = ((uint32_t)x80 & 0x3ffffff);
+ uint64_t x83 = (x81 + x51);
+ uint64_t x84 = (x83 >> 0x1b);
+ uint32_t x85 = ((uint32_t)x83 & 0x7ffffff);
+ uint64_t x86 = (x84 + x50);
+ uint64_t x87 = (x86 >> 0x1b);
+ uint32_t x88 = ((uint32_t)x86 & 0x7ffffff);
+ uint64_t x89 = (x87 + x49);
+ uint64_t x90 = (x89 >> 0x1b);
+ uint32_t x91 = ((uint32_t)x89 & 0x7ffffff);
+ uint64_t x92 = (x90 + x48);
+ uint64_t x93 = (x92 >> 0x1a);
+ uint32_t x94 = ((uint32_t)x92 & 0x3ffffff);
+ uint64_t x95 = (x61 + (0x9 * x93));
+ uint32_t x96 = (uint32_t) (x95 >> 0x1b);
+ uint32_t x97 = ((uint32_t)x95 & 0x7ffffff);
+ uint32_t x98 = (x96 + x64);
+ uint32_t x99 = (x98 >> 0x1b);
+ uint32_t x100 = (x98 & 0x7ffffff);
+ return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesquare.c b/src/Specific/solinas32_2e321m9_12limbs/fesquare.c
new file mode 100644
index 000000000..3f5fe420c
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesquare.c
@@ -0,0 +1,80 @@
+static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
+ { const uint32_t x21 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x23 = (((uint64_t)x2 * x21) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x21 * x2))))))))))));
+ { uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (0x2 * ((uint64_t)x21 * x21))));
+ { uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))));
+ { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
+ { uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x21)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (0x2 * ((uint64_t)x21 * x16))))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x21)) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (0x2 * ((uint64_t)x21 * x14)))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
+ { uint64_t x31 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x21)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (0x2 * ((uint64_t)x21 * x8))))))))))));
+ { ℤ x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x6 * x21)) + ((0x2 * ((uint64_t)x8 * x22)) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((0x2 * ((uint64_t)x22 * x8)) + (0x2 * ((uint64_t)x21 * x6)))))))))))));
+ { ℤ x34 = (((uint64_t)x2 * x2) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
+ { uint64_t x35 = (x34 >> 0x1b);
+ { uint32_t x36 = (x34 & 0x7ffffff);
+ { ℤ x37 = (x35 +ℤ x33);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = (x37 & 0x7ffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x1b);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x1a);
+ { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint64_t x47 = (x46 >> 0x1b);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint64_t x50 = (x49 >> 0x1b);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint64_t x53 = (x52 >> 0x1b);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ { uint64_t x55 = (x53 + x27);
+ { uint64_t x56 = (x55 >> 0x1a);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ { uint64_t x58 = (x56 + x26);
+ { uint64_t x59 = (x58 >> 0x1b);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ { uint64_t x61 = (x59 + x25);
+ { uint64_t x62 = (x61 >> 0x1b);
+ { uint32_t x63 = ((uint32_t)x61 & 0x7ffffff);
+ { uint64_t x64 = (x62 + x24);
+ { uint64_t x65 = (x64 >> 0x1b);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ { uint64_t x67 = (x65 + x23);
+ { uint64_t x68 = (x67 >> 0x1a);
+ { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ { uint64_t x70 = (x36 + (0x9 * x68));
+ { uint32_t x71 = (uint32_t) (x70 >> 0x1b);
+ { uint32_t x72 = ((uint32_t)x70 & 0x7ffffff);
+ { uint32_t x73 = (x71 + x39);
+ { uint32_t x74 = (x73 >> 0x1b);
+ { uint32_t x75 = (x73 & 0x7ffffff);
+ out[0] = x72;
+ out[1] = x75;
+ out[2] = (x74 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ out[7] = x57;
+ out[8] = x60;
+ out[9] = x63;
+ out[10] = x66;
+ out[11] = x69;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.log b/src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.log
new file mode 100644
index 000000000..1616acd3c
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.log
@@ -0,0 +1,60 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x23 = (((uint64_t)x2 * x21) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x21 * x2))))))))))));
+ uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (0x2 * ((uint64_t)x21 * x21))));
+ uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))));
+ uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
+ uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
+ uint64_t x28 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * ((0x2 * ((uint64_t)x16 * x21)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (0x2 * ((uint64_t)x21 * x16))))))));
+ uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x21)) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (0x2 * ((uint64_t)x21 * x14)))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
+ uint64_t x31 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x21)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (0x2 * ((uint64_t)x21 * x8))))))))))));
+ ℤ x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x6 * x21)) + ((0x2 * ((uint64_t)x8 * x22)) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((0x2 * ((uint64_t)x22 * x8)) + (0x2 * ((uint64_t)x21 * x6)))))))))))));
+ ℤ x34 = (((uint64_t)x2 * x2) +ℤ (0x9 *ℤ ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
+ uint64_t x35 = (x34 >> 0x1b);
+ uint32_t x36 = (x34 & 0x7ffffff);
+ ℤ x37 = (x35 +ℤ x33);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = (x37 & 0x7ffffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x1b);
+ uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x1a);
+ uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ uint64_t x46 = (x44 + x30);
+ uint64_t x47 = (x46 >> 0x1b);
+ uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ uint64_t x49 = (x47 + x29);
+ uint64_t x50 = (x49 >> 0x1b);
+ uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ uint64_t x52 = (x50 + x28);
+ uint64_t x53 = (x52 >> 0x1b);
+ uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ uint64_t x55 = (x53 + x27);
+ uint64_t x56 = (x55 >> 0x1a);
+ uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
+ uint64_t x58 = (x56 + x26);
+ uint64_t x59 = (x58 >> 0x1b);
+ uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ uint64_t x61 = (x59 + x25);
+ uint64_t x62 = (x61 >> 0x1b);
+ uint32_t x63 = ((uint32_t)x61 & 0x7ffffff);
+ uint64_t x64 = (x62 + x24);
+ uint64_t x65 = (x64 >> 0x1b);
+ uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ uint64_t x67 = (x65 + x23);
+ uint64_t x68 = (x67 >> 0x1a);
+ uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ uint64_t x70 = (x36 + (0x9 * x68));
+ uint32_t x71 = (uint32_t) (x70 >> 0x1b);
+ uint32_t x72 = ((uint32_t)x70 & 0x7ffffff);
+ uint32_t x73 = (x71 + x39);
+ uint32_t x74 = (x73 >> 0x1b);
+ uint32_t x75 = (x73 & 0x7ffffff);
+ return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesub.c b/src/Specific/solinas32_2e321m9_12limbs/fesub.c
new file mode 100644
index 000000000..bcec212da
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesub.c
@@ -0,0 +1,39 @@
+static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ out[0] = ((0xfffffee + x5) - x27);
+ out[1] = ((0xffffffe + x7) - x29);
+ out[2] = ((0xffffffe + x9) - x31);
+ out[3] = ((0x7fffffe + x11) - x33);
+ out[4] = ((0xffffffe + x13) - x35);
+ out[5] = ((0xffffffe + x15) - x37);
+ out[6] = ((0xffffffe + x17) - x39);
+ out[7] = ((0x7fffffe + x19) - x41);
+ out[8] = ((0xffffffe + x21) - x43);
+ out[9] = ((0xffffffe + x23) - x45);
+ out[10] = ((0xffffffe + x25) - x47);
+ out[11] = ((0x7fffffe + x24) - x46);
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.log b/src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.log
new file mode 100644
index 000000000..bab733a09
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ (((0x7fffffe + x24) - x46), ((0xffffffe + x25) - x47), ((0xffffffe + x23) - x45), ((0xffffffe + x21) - x43), ((0x7fffffe + x19) - x41), ((0xffffffe + x17) - x39), ((0xffffffe + x15) - x37), ((0xffffffe + x13) - x35), ((0x7fffffe + x11) - x33), ((0xffffffe + x9) - x31), ((0xffffffe + x7) - x29), ((0xfffffee + x5) - x27)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_12limbs/freeze.c b/src/Specific/solinas32_2e321m9_12limbs/freeze.c
new file mode 100644
index 000000000..3d85106c9
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/freeze.c
@@ -0,0 +1,64 @@
+static void freeze(uint32_t out[12], const uint32_t in1[12]) {
+ { const uint32_t x21 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff7);
+ { 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 x4, 0x7ffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x7ffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x7ffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x7ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x7ffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x3ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x7ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x7ffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x7ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x3ffffff);
+ { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
+ { uint32_t x60 = (x59 & 0x7fffff7);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
+ { uint32_t x64 = (x59 & 0x7ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
+ { uint32_t x68 = (x59 & 0x7ffffff);
+ { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
+ { uint32_t x72 = (x59 & 0x3ffffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
+ { uint32_t x76 = (x59 & 0x7ffffff);
+ { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
+ { uint32_t x80 = (x59 & 0x7ffffff);
+ { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
+ { uint32_t x84 = (x59 & 0x7ffffff);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
+ { uint32_t x88 = (x59 & 0x3ffffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
+ { uint32_t x92 = (x59 & 0x7ffffff);
+ { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
+ { uint32_t x96 = (x59 & 0x7ffffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
+ { uint32_t x100 = (x59 & 0x7ffffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
+ { uint32_t x104 = (x59 & 0x3ffffff);
+ { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
+ out[0] = x62;
+ out[1] = x66;
+ out[2] = x70;
+ out[3] = x74;
+ out[4] = x78;
+ out[5] = x82;
+ out[6] = x86;
+ out[7] = x90;
+ out[8] = x94;
+ out[9] = x98;
+ out[10] = x102;
+ out[11] = x106;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.log b/src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.log
new file mode 100644
index 000000000..d5fcaf495
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff7);
+ 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 x4, 0x7ffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x7ffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x7ffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x7ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x7ffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x3ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x7ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x7ffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x7ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x3ffffff);
+ uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
+ uint32_t x60 = (x59 & 0x7fffff7);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
+ uint32_t x64 = (x59 & 0x7ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
+ uint32_t x68 = (x59 & 0x7ffffff);
+ uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
+ uint32_t x72 = (x59 & 0x3ffffff);
+ uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
+ uint32_t x76 = (x59 & 0x7ffffff);
+ uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
+ uint32_t x80 = (x59 & 0x7ffffff);
+ uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
+ uint32_t x84 = (x59 & 0x7ffffff);
+ uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
+ uint32_t x88 = (x59 & 0x3ffffff);
+ uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
+ uint32_t x92 = (x59 & 0x7ffffff);
+ uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
+ uint32_t x96 = (x59 & 0x7ffffff);
+ uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
+ uint32_t x100 = (x59 & 0x7ffffff);
+ uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
+ uint32_t x104 = (x59 & 0x3ffffff);
+ uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
+ (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_13limbs/feadd.c b/src/Specific/solinas32_2e321m9_13limbs/feadd.c
new file mode 100644
index 000000000..dbbe1da57
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/feadd.c
@@ -0,0 +1,42 @@
+static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = (x5 + x29);
+ out[1] = (x7 + x31);
+ out[2] = (x9 + x33);
+ out[3] = (x11 + x35);
+ out[4] = (x13 + x37);
+ out[5] = (x15 + x39);
+ out[6] = (x17 + x41);
+ out[7] = (x19 + x43);
+ out[8] = (x21 + x45);
+ out[9] = (x23 + x47);
+ out[10] = (x25 + x49);
+ out[11] = (x27 + x51);
+ out[12] = (x26 + x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.log b/src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.log
new file mode 100644
index 000000000..e64abeaba
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ ((x26 + x50), (x27 + x51), (x25 + x49), (x23 + x47), (x21 + x45), (x19 + x43), (x17 + x41), (x15 + x39), (x13 + x37), (x11 + x35), (x9 + x33), (x7 + x31), (x5 + x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_13limbs/femul.c b/src/Specific/solinas32_2e321m9_13limbs/femul.c
new file mode 100644
index 000000000..667790295
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/femul.c
@@ -0,0 +1,99 @@
+static void femul(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ { uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((0x2 * ((uint64_t)x23 * x35)) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0x9 * (0x2 * ((uint64_t)x26 * x50))));
+ { uint64_t x54 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + ((uint64_t)x25 * x29))))))))))) + (0x9 * ((0x2 * ((uint64_t)x27 * x50)) + (0x2 * ((uint64_t)x26 * x51)))));
+ { uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x9 * (((uint64_t)x25 * x50) + (((uint64_t)x27 * x51) + ((uint64_t)x26 * x49)))));
+ { uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x50)) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (0x2 * ((uint64_t)x26 * x47)))))));
+ { uint64_t x57 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x19 * x29)))))))) + (0x9 * ((0x2 * ((uint64_t)x21 * x50)) + ((0x2 * ((uint64_t)x23 * x51)) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + (0x2 * ((uint64_t)x26 * x45))))))));
+ { uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((0x2 * ((uint64_t)x11 * x35)) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0x9 * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
+ { uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x50)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + ((0x2 * ((uint64_t)x23 * x47)) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (0x2 * ((uint64_t)x26 * x41))))))))));
+ { uint64_t x60 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((uint64_t)x13 * x29))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x50)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ { uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0x9 * (((uint64_t)x13 * x50) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + ((uint64_t)x26 * x37)))))))))));
+ { uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x9 * ((0x2 * ((uint64_t)x11 * x50)) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + (0x2 * ((uint64_t)x26 * x35)))))))))))));
+ { uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x9 * ((0x2 * ((uint64_t)x9 * x50)) + ((0x2 * ((uint64_t)x11 * x51)) + (((uint64_t)x13 * x49) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (((uint64_t)x25 * x37) + ((0x2 * ((uint64_t)x27 * x35)) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ { uint64_t x64 = (((uint64_t)x5 * x29) + (0x9 * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ { uint64_t x65 = (x64 >> 0x19);
+ { uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
+ { uint64_t x67 = (x65 + x63);
+ { uint64_t x68 = (x67 >> 0x19);
+ { uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ { uint64_t x70 = (x68 + x62);
+ { uint64_t x71 = (x70 >> 0x19);
+ { uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
+ { uint64_t x73 = (x71 + x61);
+ { uint64_t x74 = (x73 >> 0x18);
+ { uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ { uint64_t x76 = (x74 + x60);
+ { uint64_t x77 = (x76 >> 0x19);
+ { uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
+ { uint64_t x79 = (x77 + x59);
+ { uint64_t x80 = (x79 >> 0x19);
+ { uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
+ { uint64_t x82 = (x80 + x58);
+ { uint64_t x83 = (x82 >> 0x18);
+ { uint32_t x84 = ((uint32_t)x82 & 0xffffff);
+ { uint64_t x85 = (x83 + x57);
+ { uint64_t x86 = (x85 >> 0x19);
+ { uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
+ { uint64_t x88 = (x86 + x56);
+ { uint64_t x89 = (x88 >> 0x19);
+ { uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
+ { uint64_t x91 = (x89 + x55);
+ { uint64_t x92 = (x91 >> 0x18);
+ { uint32_t x93 = ((uint32_t)x91 & 0xffffff);
+ { uint64_t x94 = (x92 + x54);
+ { uint64_t x95 = (x94 >> 0x19);
+ { uint32_t x96 = ((uint32_t)x94 & 0x1ffffff);
+ { uint64_t x97 = (x95 + x53);
+ { uint64_t x98 = (x97 >> 0x19);
+ { uint32_t x99 = ((uint32_t)x97 & 0x1ffffff);
+ { uint64_t x100 = (x98 + x52);
+ { uint64_t x101 = (x100 >> 0x18);
+ { uint32_t x102 = ((uint32_t)x100 & 0xffffff);
+ { uint64_t x103 = (x66 + (0x9 * x101));
+ { uint32_t x104 = (uint32_t) (x103 >> 0x19);
+ { uint32_t x105 = ((uint32_t)x103 & 0x1ffffff);
+ { uint32_t x106 = (x104 + x69);
+ { uint32_t x107 = (x106 >> 0x19);
+ { uint32_t x108 = (x106 & 0x1ffffff);
+ out[0] = x105;
+ out[1] = x108;
+ out[2] = (x107 + x72);
+ out[3] = x75;
+ out[4] = x78;
+ out[5] = x81;
+ out[6] = x84;
+ out[7] = x87;
+ out[8] = x90;
+ out[9] = x93;
+ out[10] = x96;
+ out[11] = x99;
+ out[12] = x102;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_13limbs/femulDisplay.log b/src/Specific/solinas32_2e321m9_13limbs/femulDisplay.log
new file mode 100644
index 000000000..49f9557c8
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/femulDisplay.log
@@ -0,0 +1,64 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((0x2 * ((uint64_t)x23 * x35)) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0x9 * (0x2 * ((uint64_t)x26 * x50))));
+ uint64_t x54 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + ((uint64_t)x25 * x29))))))))))) + (0x9 * ((0x2 * ((uint64_t)x27 * x50)) + (0x2 * ((uint64_t)x26 * x51)))));
+ uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x9 * (((uint64_t)x25 * x50) + (((uint64_t)x27 * x51) + ((uint64_t)x26 * x49)))));
+ uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + (((uint64_t)x13 * x37) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0x9 * ((0x2 * ((uint64_t)x23 * x50)) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (0x2 * ((uint64_t)x26 * x47)))))));
+ uint64_t x57 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x19 * x29)))))))) + (0x9 * ((0x2 * ((uint64_t)x21 * x50)) + ((0x2 * ((uint64_t)x23 * x51)) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + (0x2 * ((uint64_t)x26 * x45))))))));
+ uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((0x2 * ((uint64_t)x11 * x35)) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0x9 * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
+ uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x9 * ((0x2 * ((uint64_t)x17 * x50)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + ((0x2 * ((uint64_t)x23 * x47)) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (0x2 * ((uint64_t)x26 * x41))))))))));
+ uint64_t x60 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((uint64_t)x13 * x29))))) + (0x9 * ((0x2 * ((uint64_t)x15 * x50)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0x9 * (((uint64_t)x13 * x50) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + ((uint64_t)x26 * x37)))))))))));
+ uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x9 * ((0x2 * ((uint64_t)x11 * x50)) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + (0x2 * ((uint64_t)x26 * x35)))))))))))));
+ uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x9 * ((0x2 * ((uint64_t)x9 * x50)) + ((0x2 * ((uint64_t)x11 * x51)) + (((uint64_t)x13 * x49) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + (((uint64_t)x25 * x37) + ((0x2 * ((uint64_t)x27 * x35)) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ uint64_t x64 = (((uint64_t)x5 * x29) + (0x9 * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ uint64_t x65 = (x64 >> 0x19);
+ uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
+ uint64_t x67 = (x65 + x63);
+ uint64_t x68 = (x67 >> 0x19);
+ uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ uint64_t x70 = (x68 + x62);
+ uint64_t x71 = (x70 >> 0x19);
+ uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
+ uint64_t x73 = (x71 + x61);
+ uint64_t x74 = (x73 >> 0x18);
+ uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ uint64_t x76 = (x74 + x60);
+ uint64_t x77 = (x76 >> 0x19);
+ uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
+ uint64_t x79 = (x77 + x59);
+ uint64_t x80 = (x79 >> 0x19);
+ uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
+ uint64_t x82 = (x80 + x58);
+ uint64_t x83 = (x82 >> 0x18);
+ uint32_t x84 = ((uint32_t)x82 & 0xffffff);
+ uint64_t x85 = (x83 + x57);
+ uint64_t x86 = (x85 >> 0x19);
+ uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
+ uint64_t x88 = (x86 + x56);
+ uint64_t x89 = (x88 >> 0x19);
+ uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
+ uint64_t x91 = (x89 + x55);
+ uint64_t x92 = (x91 >> 0x18);
+ uint32_t x93 = ((uint32_t)x91 & 0xffffff);
+ uint64_t x94 = (x92 + x54);
+ uint64_t x95 = (x94 >> 0x19);
+ uint32_t x96 = ((uint32_t)x94 & 0x1ffffff);
+ uint64_t x97 = (x95 + x53);
+ uint64_t x98 = (x97 >> 0x19);
+ uint32_t x99 = ((uint32_t)x97 & 0x1ffffff);
+ uint64_t x100 = (x98 + x52);
+ uint64_t x101 = (x100 >> 0x18);
+ uint32_t x102 = ((uint32_t)x100 & 0xffffff);
+ uint64_t x103 = (x66 + (0x9 * x101));
+ uint32_t x104 = (uint32_t) (x103 >> 0x19);
+ uint32_t x105 = ((uint32_t)x103 & 0x1ffffff);
+ uint32_t x106 = (x104 + x69);
+ uint32_t x107 = (x106 >> 0x19);
+ uint32_t x108 = (x106 & 0x1ffffff);
+ return (Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, (x107 + x72), Return x108, Return x105))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesquare.c b/src/Specific/solinas32_2e321m9_13limbs/fesquare.c
new file mode 100644
index 000000000..1a21aba98
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesquare.c
@@ -0,0 +1,86 @@
+static void fesquare(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x9 * (0x2 * ((uint64_t)x23 * x23))));
+ { uint64_t x27 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x9 * ((0x2 * ((uint64_t)x24 * x23)) + (0x2 * ((uint64_t)x23 * x24)))));
+ { uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (((uint64_t)x22 * x23) + (((uint64_t)x24 * x24) + ((uint64_t)x23 * x22)))));
+ { uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x23)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (0x2 * ((uint64_t)x23 * x20)))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((0x2 * ((uint64_t)x18 * x23)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + (0x2 * ((uint64_t)x23 * x18))))))));
+ { uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x23)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (0x2 * ((uint64_t)x23 * x14))))))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x23)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x23) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((uint64_t)x23 * x10)))))))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x23)) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (0x2 * ((uint64_t)x23 * x8)))))))))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x23)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ { uint64_t x37 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ { uint64_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ { uint64_t x40 = (x38 + x36);
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x35);
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x44 + x34);
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x33);
+ { uint64_t x50 = (x49 >> 0x19);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ { uint64_t x52 = (x50 + x32);
+ { uint64_t x53 = (x52 >> 0x19);
+ { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ { uint64_t x55 = (x53 + x31);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x56 + x30);
+ { uint64_t x59 = (x58 >> 0x19);
+ { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ { uint64_t x61 = (x59 + x29);
+ { uint64_t x62 = (x61 >> 0x19);
+ { uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ { uint64_t x64 = (x62 + x28);
+ { uint64_t x65 = (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint64_t x67 = (x65 + x27);
+ { uint64_t x68 = (x67 >> 0x19);
+ { uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ { uint64_t x70 = (x68 + x26);
+ { uint64_t x71 = (x70 >> 0x19);
+ { uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
+ { uint64_t x73 = (x71 + x25);
+ { uint64_t x74 = (x73 >> 0x18);
+ { uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ { uint64_t x76 = (x39 + (0x9 * x74));
+ { uint32_t x77 = (uint32_t) (x76 >> 0x19);
+ { uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
+ { uint32_t x79 = (x77 + x42);
+ { uint32_t x80 = (x79 >> 0x19);
+ { uint32_t x81 = (x79 & 0x1ffffff);
+ out[0] = x78;
+ out[1] = x81;
+ out[2] = (x80 + x45);
+ out[3] = x48;
+ out[4] = x51;
+ out[5] = x54;
+ out[6] = x57;
+ out[7] = x60;
+ out[8] = x63;
+ out[9] = x66;
+ out[10] = x69;
+ out[11] = x72;
+ out[12] = x75;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.log b/src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.log
new file mode 100644
index 000000000..3ef05890a
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.log
@@ -0,0 +1,64 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x9 * (0x2 * ((uint64_t)x23 * x23))));
+ uint64_t x27 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x9 * ((0x2 * ((uint64_t)x24 * x23)) + (0x2 * ((uint64_t)x23 * x24)))));
+ uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (((uint64_t)x22 * x23) + (((uint64_t)x24 * x24) + ((uint64_t)x23 * x22)))));
+ uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((0x2 * ((uint64_t)x20 * x23)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (0x2 * ((uint64_t)x23 * x20)))))));
+ uint64_t x30 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((0x2 * ((uint64_t)x18 * x23)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + (0x2 * ((uint64_t)x23 * x18))))))));
+ uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * ((0x2 * ((uint64_t)x14 * x23)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (0x2 * ((uint64_t)x23 * x14))))))))));
+ uint64_t x33 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * ((0x2 * ((uint64_t)x12 * x23)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x23) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((uint64_t)x23 * x10)))))))))));
+ uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x23)) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (0x2 * ((uint64_t)x23 * x8)))))))))))));
+ uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * ((0x2 * ((uint64_t)x6 * x23)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ uint64_t x37 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ uint64_t x38 = (x37 >> 0x19);
+ uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
+ uint64_t x40 = (x38 + x36);
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x35);
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x44 + x34);
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x33);
+ uint64_t x50 = (x49 >> 0x19);
+ uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ uint64_t x52 = (x50 + x32);
+ uint64_t x53 = (x52 >> 0x19);
+ uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ uint64_t x55 = (x53 + x31);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x56 + x30);
+ uint64_t x59 = (x58 >> 0x19);
+ uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ uint64_t x61 = (x59 + x29);
+ uint64_t x62 = (x61 >> 0x19);
+ uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ uint64_t x64 = (x62 + x28);
+ uint64_t x65 = (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint64_t x67 = (x65 + x27);
+ uint64_t x68 = (x67 >> 0x19);
+ uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ uint64_t x70 = (x68 + x26);
+ uint64_t x71 = (x70 >> 0x19);
+ uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
+ uint64_t x73 = (x71 + x25);
+ uint64_t x74 = (x73 >> 0x18);
+ uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ uint64_t x76 = (x39 + (0x9 * x74));
+ uint32_t x77 = (uint32_t) (x76 >> 0x19);
+ uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
+ uint32_t x79 = (x77 + x42);
+ uint32_t x80 = (x79 >> 0x19);
+ uint32_t x81 = (x79 & 0x1ffffff);
+ return (Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, (x80 + x45), Return x81, Return x78))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesub.c b/src/Specific/solinas32_2e321m9_13limbs/fesub.c
new file mode 100644
index 000000000..7340c17af
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesub.c
@@ -0,0 +1,42 @@
+static void fesub(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = ((Const 67108846 + x5) - x29);
+ out[1] = ((0x3fffffe + x7) - x31);
+ out[2] = ((0x3fffffe + x9) - x33);
+ out[3] = ((0x1fffffe + x11) - x35);
+ out[4] = ((0x3fffffe + x13) - x37);
+ out[5] = ((0x3fffffe + x15) - x39);
+ out[6] = ((0x1fffffe + x17) - x41);
+ out[7] = ((0x3fffffe + x19) - x43);
+ out[8] = ((0x3fffffe + x21) - x45);
+ out[9] = ((0x1fffffe + x23) - x47);
+ out[10] = ((0x3fffffe + x25) - x49);
+ out[11] = ((0x3fffffe + x27) - x51);
+ out[12] = ((0x1fffffe + x26) - x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.log b/src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.log
new file mode 100644
index 000000000..92bb20288
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ (((0x1fffffe + x26) - x50), ((0x3fffffe + x27) - x51), ((0x3fffffe + x25) - x49), ((0x1fffffe + x23) - x47), ((0x3fffffe + x21) - x45), ((0x3fffffe + x19) - x43), ((0x1fffffe + x17) - x41), ((0x3fffffe + x15) - x39), ((0x3fffffe + x13) - x37), ((0x1fffffe + x11) - x35), ((0x3fffffe + x9) - x33), ((0x3fffffe + x7) - x31), ((Const 67108846 + x5) - x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9_13limbs/freeze.c b/src/Specific/solinas32_2e321m9_13limbs/freeze.c
new file mode 100644
index 000000000..be4df7ced
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/freeze.c
@@ -0,0 +1,69 @@
+static void freeze(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554423);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x1ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x1ffffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0xffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x1ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x1ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0xffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x1ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x1ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0xffffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x1ffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x1ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0xffffff);
+ { uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ { uint32_t x65 = (x64 & Const 33554423);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ { uint32_t x69 = (x64 & 0x1ffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ { uint32_t x73 = (x64 & 0x1ffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ { uint32_t x77 = (x64 & 0xffffff);
+ { uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ { uint32_t x81 = (x64 & 0x1ffffff);
+ { uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ { uint32_t x85 = (x64 & 0x1ffffff);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ { uint32_t x89 = (x64 & 0xffffff);
+ { uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ { uint32_t x93 = (x64 & 0x1ffffff);
+ { uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ { uint32_t x97 = (x64 & 0x1ffffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ { uint32_t x101 = (x64 & 0xffffff);
+ { uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ { uint32_t x105 = (x64 & 0x1ffffff);
+ { uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ { uint32_t x109 = (x64 & 0x1ffffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ { uint32_t x113 = (x64 & 0xffffff);
+ { uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ out[0] = x67;
+ out[1] = x71;
+ out[2] = x75;
+ out[3] = x79;
+ out[4] = x83;
+ out[5] = x87;
+ out[6] = x91;
+ out[7] = x95;
+ out[8] = x99;
+ out[9] = x103;
+ out[10] = x107;
+ out[11] = x111;
+ out[12] = x115;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.log b/src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.log
new file mode 100644
index 000000000..56e6c6c48
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.log
@@ -0,0 +1,47 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554423);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x1ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x1ffffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0xffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x1ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x1ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0xffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x1ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x1ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0xffffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x1ffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x1ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0xffffff);
+ uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ uint32_t x65 = (x64 & Const 33554423);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ uint32_t x69 = (x64 & 0x1ffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ uint32_t x73 = (x64 & 0x1ffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ uint32_t x77 = (x64 & 0xffffff);
+ uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ uint32_t x81 = (x64 & 0x1ffffff);
+ uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ uint32_t x85 = (x64 & 0x1ffffff);
+ uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ uint32_t x89 = (x64 & 0xffffff);
+ uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ uint32_t x93 = (x64 & 0x1ffffff);
+ uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ uint32_t x97 = (x64 & 0x1ffffff);
+ uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ uint32_t x101 = (x64 & 0xffffff);
+ uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ uint32_t x105 = (x64 & 0x1ffffff);
+ uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ uint32_t x109 = (x64 & 0x1ffffff);
+ uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ uint32_t x113 = (x64 & 0xffffff);
+ uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ (Return x115, Return x111, Return x107, Return x103, Return x99, Return x95, Return x91, Return x87, Return x83, Return x79, Return x75, Return x71, Return x67))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.c b/src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.c
new file mode 100644
index 000000000..68eccd2bc
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.c
@@ -0,0 +1,39 @@
+static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ out[0] = (x5 + x27);
+ out[1] = (x7 + x29);
+ out[2] = (x9 + x31);
+ out[3] = (x11 + x33);
+ out[4] = (x13 + x35);
+ out[5] = (x15 + x37);
+ out[6] = (x17 + x39);
+ out[7] = (x19 + x41);
+ out[8] = (x21 + x43);
+ out[9] = (x23 + x45);
+ out[10] = (x25 + x47);
+ out[11] = (x24 + x46);
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.log b/src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.log
new file mode 100644
index 000000000..4109af59c
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.c b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.c
new file mode 100644
index 000000000..239276ce9
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.c
@@ -0,0 +1,101 @@
+static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
+ { const uint32_t x21 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x23 = ((0x2 * ((uint64_t)(x12 + x21) * (x12 + x21))) - (0x2 * ((uint64_t)x12 * x12)));
+ { uint64_t x24 = (((0x2 * ((uint64_t)(x10 + x22) * (x12 + x21))) + (0x2 * ((uint64_t)(x12 + x21) * (x10 + x22)))) - ((0x2 * ((uint64_t)x10 * x12)) + (0x2 * ((uint64_t)x12 * x10))));
+ { uint64_t x25 = (((0x2 * ((uint64_t)(x8 + x20) * (x12 + x21))) + ((0x2 * ((uint64_t)(x10 + x22) * (x10 + x22))) + (0x2 * ((uint64_t)(x12 + x21) * (x8 + x20))))) - ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + (0x2 * ((uint64_t)x12 * x8)))));
+ { uint64_t x26 = (((0x2 * ((uint64_t)(x6 + x18) * (x12 + x21))) + ((0x2 * ((uint64_t)(x8 + x20) * (x10 + x22))) + ((0x2 * ((uint64_t)(x10 + x22) * (x8 + x20))) + (0x2 * ((uint64_t)(x12 + x21) * (x6 + x18)))))) - ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (0x2 * ((uint64_t)x12 * x6))))));
+ { uint64_t x27 = (((0x2 * ((uint64_t)(x4 + x16) * (x12 + x21))) + ((0x2 * ((uint64_t)(x6 + x18) * (x10 + x22))) + ((0x2 * ((uint64_t)(x8 + x20) * (x8 + x20))) + ((0x2 * ((uint64_t)(x10 + x22) * (x6 + x18))) + (0x2 * ((uint64_t)(x12 + x21) * (x4 + x16))))))) - ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x12 * x4)))))));
+ { uint64_t x28 = ((((uint64_t)(x2 + x14) * (x12 + x21)) + (((uint64_t)(x4 + x16) * (x10 + x22)) + (((uint64_t)(x6 + x18) * (x8 + x20)) + (((uint64_t)(x8 + x20) * (x6 + x18)) + (((uint64_t)(x10 + x22) * (x4 + x16)) + ((uint64_t)(x12 + x21) * (x2 + x14))))))) - (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))));
+ { uint64_t x29 = ((((uint64_t)(x2 + x14) * (x10 + x22)) + (((uint64_t)(x4 + x16) * (x8 + x20)) + (((uint64_t)(x6 + x18) * (x6 + x18)) + (((uint64_t)(x8 + x20) * (x4 + x16)) + ((uint64_t)(x10 + x22) * (x2 + x14)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
+ { uint64_t x30 = ((((uint64_t)(x2 + x14) * (x8 + x20)) + (((uint64_t)(x4 + x16) * (x6 + x18)) + (((uint64_t)(x6 + x18) * (x4 + x16)) + ((uint64_t)(x8 + x20) * (x2 + x14))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
+ { uint64_t x31 = ((((uint64_t)(x2 + x14) * (x6 + x18)) + (((uint64_t)(x4 + x16) * (x4 + x16)) + ((uint64_t)(x6 + x18) * (x2 + x14)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
+ { uint64_t x32 = ((((uint64_t)(x2 + x14) * (x4 + x16)) + ((uint64_t)(x4 + x16) * (x2 + x14))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
+ { uint64_t x33 = (((uint64_t)(x2 + x14) * (x2 + x14)) - ((uint64_t)x2 * x2));
+ { uint64_t x34 = ((((0x2 * ((uint64_t)x12 * x12)) + (0x2 * ((uint64_t)x21 * x21))) + x29) + x23);
+ { uint64_t x35 = (((((0x2 * ((uint64_t)x10 * x12)) + (0x2 * ((uint64_t)x12 * x10))) + ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))) + x30) + x24);
+ { uint64_t x36 = (((((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + (0x2 * ((uint64_t)x12 * x8)))) + ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))) + x31) + x25);
+ { uint64_t x37 = (((((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (0x2 * ((uint64_t)x12 * x6))))) + ((0x2 * ((uint64_t)x18 * x21)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (0x2 * ((uint64_t)x21 * x18)))))) + x32) + x26);
+ { uint64_t x38 = (((((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x12 * x4)))))) + ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))) + x33) + x27);
+ { uint64_t x39 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14)))))));
+ { uint64_t x40 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((uint64_t)x22 * x14)))))) + x23);
+ { uint64_t x41 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x20 * x14))))) + x24);
+ { uint64_t x42 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + ((uint64_t)x18 * x14)))) + x25);
+ { uint64_t x43 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x14 * x16) + ((uint64_t)x16 * x14))) + x26);
+ { uint64_t x44 = ((((uint64_t)x2 * x2) + ((uint64_t)x14 * x14)) + x27);
+ { uint64_t x45 = (x39 >> 0x1a);
+ { uint32_t x46 = ((uint32_t)x39 & 0x3ffffff);
+ { uint64_t x47 = (x28 >> 0x1a);
+ { uint32_t x48 = ((uint32_t)x28 & 0x3ffffff);
+ { uint64_t x49 = ((0x4000000 * x47) + x48);
+ { uint64_t x50 = (x49 >> 0x1a);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ { uint64_t x52 = ((x45 + x38) + x50);
+ { uint64_t x53 = (x52 >> 0x1b);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ { uint64_t x55 = (x44 + x50);
+ { uint64_t x56 = (x55 >> 0x1b);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
+ { uint64_t x58 = (x53 + x37);
+ { uint64_t x59 = (x58 >> 0x1b);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ { uint64_t x61 = (x56 + x43);
+ { uint64_t x62 = (x61 >> 0x1b);
+ { uint32_t x63 = ((uint32_t)x61 & 0x7ffffff);
+ { uint64_t x64 = (x59 + x36);
+ { uint64_t x65 = (x64 >> 0x1b);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ { uint64_t x67 = (x62 + x42);
+ { uint64_t x68 = (x67 >> 0x1b);
+ { uint32_t x69 = ((uint32_t)x67 & 0x7ffffff);
+ { uint64_t x70 = (x65 + x35);
+ { uint64_t x71 = (x70 >> 0x1b);
+ { uint32_t x72 = ((uint32_t)x70 & 0x7ffffff);
+ { uint64_t x73 = (x68 + x41);
+ { uint64_t x74 = (x73 >> 0x1b);
+ { uint32_t x75 = ((uint32_t)x73 & 0x7ffffff);
+ { uint64_t x76 = (x71 + x34);
+ { uint64_t x77 = (x76 >> 0x1b);
+ { uint32_t x78 = ((uint32_t)x76 & 0x7ffffff);
+ { uint64_t x79 = (x74 + x40);
+ { uint64_t x80 = (x79 >> 0x1b);
+ { uint32_t x81 = ((uint32_t)x79 & 0x7ffffff);
+ { uint64_t x82 = (x77 + x51);
+ { uint32_t x83 = (uint32_t) (x82 >> 0x1a);
+ { uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
+ { uint64_t x85 = (x80 + x46);
+ { uint32_t x86 = (uint32_t) (x85 >> 0x1a);
+ { uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
+ { uint64_t x88 = (((uint64_t)0x4000000 * x83) + x84);
+ { uint32_t x89 = (uint32_t) (x88 >> 0x1a);
+ { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ { uint32_t x91 = ((x86 + x54) + x89);
+ { uint32_t x92 = (x91 >> 0x1b);
+ { uint32_t x93 = (x91 & 0x7ffffff);
+ { uint32_t x94 = (x57 + x89);
+ { uint32_t x95 = (x94 >> 0x1b);
+ { uint32_t x96 = (x94 & 0x7ffffff);
+ out[0] = x96;
+ out[1] = (x95 + x63);
+ out[2] = x69;
+ out[3] = x75;
+ out[4] = x81;
+ out[5] = x87;
+ out[6] = x93;
+ out[7] = (x92 + x60);
+ out[8] = x66;
+ out[9] = x72;
+ out[10] = x78;
+ out[11] = x90;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.log b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.log
new file mode 100644
index 000000000..dd9b17663
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.log
@@ -0,0 +1,81 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x23 = ((0x2 * ((uint64_t)(x12 + x21) * (x12 + x21))) - (0x2 * ((uint64_t)x12 * x12)));
+ uint64_t x24 = (((0x2 * ((uint64_t)(x10 + x22) * (x12 + x21))) + (0x2 * ((uint64_t)(x12 + x21) * (x10 + x22)))) - ((0x2 * ((uint64_t)x10 * x12)) + (0x2 * ((uint64_t)x12 * x10))));
+ uint64_t x25 = (((0x2 * ((uint64_t)(x8 + x20) * (x12 + x21))) + ((0x2 * ((uint64_t)(x10 + x22) * (x10 + x22))) + (0x2 * ((uint64_t)(x12 + x21) * (x8 + x20))))) - ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + (0x2 * ((uint64_t)x12 * x8)))));
+ uint64_t x26 = (((0x2 * ((uint64_t)(x6 + x18) * (x12 + x21))) + ((0x2 * ((uint64_t)(x8 + x20) * (x10 + x22))) + ((0x2 * ((uint64_t)(x10 + x22) * (x8 + x20))) + (0x2 * ((uint64_t)(x12 + x21) * (x6 + x18)))))) - ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (0x2 * ((uint64_t)x12 * x6))))));
+ uint64_t x27 = (((0x2 * ((uint64_t)(x4 + x16) * (x12 + x21))) + ((0x2 * ((uint64_t)(x6 + x18) * (x10 + x22))) + ((0x2 * ((uint64_t)(x8 + x20) * (x8 + x20))) + ((0x2 * ((uint64_t)(x10 + x22) * (x6 + x18))) + (0x2 * ((uint64_t)(x12 + x21) * (x4 + x16))))))) - ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x12 * x4)))))));
+ uint64_t x28 = ((((uint64_t)(x2 + x14) * (x12 + x21)) + (((uint64_t)(x4 + x16) * (x10 + x22)) + (((uint64_t)(x6 + x18) * (x8 + x20)) + (((uint64_t)(x8 + x20) * (x6 + x18)) + (((uint64_t)(x10 + x22) * (x4 + x16)) + ((uint64_t)(x12 + x21) * (x2 + x14))))))) - (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))));
+ uint64_t x29 = ((((uint64_t)(x2 + x14) * (x10 + x22)) + (((uint64_t)(x4 + x16) * (x8 + x20)) + (((uint64_t)(x6 + x18) * (x6 + x18)) + (((uint64_t)(x8 + x20) * (x4 + x16)) + ((uint64_t)(x10 + x22) * (x2 + x14)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
+ uint64_t x30 = ((((uint64_t)(x2 + x14) * (x8 + x20)) + (((uint64_t)(x4 + x16) * (x6 + x18)) + (((uint64_t)(x6 + x18) * (x4 + x16)) + ((uint64_t)(x8 + x20) * (x2 + x14))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
+ uint64_t x31 = ((((uint64_t)(x2 + x14) * (x6 + x18)) + (((uint64_t)(x4 + x16) * (x4 + x16)) + ((uint64_t)(x6 + x18) * (x2 + x14)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
+ uint64_t x32 = ((((uint64_t)(x2 + x14) * (x4 + x16)) + ((uint64_t)(x4 + x16) * (x2 + x14))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
+ uint64_t x33 = (((uint64_t)(x2 + x14) * (x2 + x14)) - ((uint64_t)x2 * x2));
+ uint64_t x34 = ((((0x2 * ((uint64_t)x12 * x12)) + (0x2 * ((uint64_t)x21 * x21))) + x29) + x23);
+ uint64_t x35 = (((((0x2 * ((uint64_t)x10 * x12)) + (0x2 * ((uint64_t)x12 * x10))) + ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))) + x30) + x24);
+ uint64_t x36 = (((((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + (0x2 * ((uint64_t)x12 * x8)))) + ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))) + x31) + x25);
+ uint64_t x37 = (((((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + (0x2 * ((uint64_t)x12 * x6))))) + ((0x2 * ((uint64_t)x18 * x21)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (0x2 * ((uint64_t)x21 * x18)))))) + x32) + x26);
+ uint64_t x38 = (((((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x12 * x4)))))) + ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))) + x33) + x27);
+ uint64_t x39 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14)))))));
+ uint64_t x40 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((uint64_t)x22 * x14)))))) + x23);
+ uint64_t x41 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x20 * x14))))) + x24);
+ uint64_t x42 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + ((uint64_t)x18 * x14)))) + x25);
+ uint64_t x43 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x14 * x16) + ((uint64_t)x16 * x14))) + x26);
+ uint64_t x44 = ((((uint64_t)x2 * x2) + ((uint64_t)x14 * x14)) + x27);
+ uint64_t x45 = (x39 >> 0x1a);
+ uint32_t x46 = ((uint32_t)x39 & 0x3ffffff);
+ uint64_t x47 = (x28 >> 0x1a);
+ uint32_t x48 = ((uint32_t)x28 & 0x3ffffff);
+ uint64_t x49 = ((0x4000000 * x47) + x48);
+ uint64_t x50 = (x49 >> 0x1a);
+ uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ uint64_t x52 = ((x45 + x38) + x50);
+ uint64_t x53 = (x52 >> 0x1b);
+ uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ uint64_t x55 = (x44 + x50);
+ uint64_t x56 = (x55 >> 0x1b);
+ uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
+ uint64_t x58 = (x53 + x37);
+ uint64_t x59 = (x58 >> 0x1b);
+ uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ uint64_t x61 = (x56 + x43);
+ uint64_t x62 = (x61 >> 0x1b);
+ uint32_t x63 = ((uint32_t)x61 & 0x7ffffff);
+ uint64_t x64 = (x59 + x36);
+ uint64_t x65 = (x64 >> 0x1b);
+ uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ uint64_t x67 = (x62 + x42);
+ uint64_t x68 = (x67 >> 0x1b);
+ uint32_t x69 = ((uint32_t)x67 & 0x7ffffff);
+ uint64_t x70 = (x65 + x35);
+ uint64_t x71 = (x70 >> 0x1b);
+ uint32_t x72 = ((uint32_t)x70 & 0x7ffffff);
+ uint64_t x73 = (x68 + x41);
+ uint64_t x74 = (x73 >> 0x1b);
+ uint32_t x75 = ((uint32_t)x73 & 0x7ffffff);
+ uint64_t x76 = (x71 + x34);
+ uint64_t x77 = (x76 >> 0x1b);
+ uint32_t x78 = ((uint32_t)x76 & 0x7ffffff);
+ uint64_t x79 = (x74 + x40);
+ uint64_t x80 = (x79 >> 0x1b);
+ uint32_t x81 = ((uint32_t)x79 & 0x7ffffff);
+ uint64_t x82 = (x77 + x51);
+ uint32_t x83 = (uint32_t) (x82 >> 0x1a);
+ uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
+ uint64_t x85 = (x80 + x46);
+ uint32_t x86 = (uint32_t) (x85 >> 0x1a);
+ uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
+ uint64_t x88 = (((uint64_t)0x4000000 * x83) + x84);
+ uint32_t x89 = (uint32_t) (x88 >> 0x1a);
+ uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ uint32_t x91 = ((x86 + x54) + x89);
+ uint32_t x92 = (x91 >> 0x1b);
+ uint32_t x93 = (x91 & 0x7ffffff);
+ uint32_t x94 = (x57 + x89);
+ uint32_t x95 = (x94 >> 0x1b);
+ uint32_t x96 = (x94 & 0x7ffffff);
+ return (Return x90, Return x78, Return x72, Return x66, (x92 + x60), Return x93, Return x87, Return x81, Return x75, Return x69, (x95 + x63), Return x96))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.c b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.c
new file mode 100644
index 000000000..009fc98df
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.c
@@ -0,0 +1,39 @@
+static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x46 = in2[11];
+ { const uint32_t x47 = in2[10];
+ { const uint32_t x45 = in2[9];
+ { const uint32_t x43 = in2[8];
+ { const uint32_t x41 = in2[7];
+ { const uint32_t x39 = in2[6];
+ { const uint32_t x37 = in2[5];
+ { const uint32_t x35 = in2[4];
+ { const uint32_t x33 = in2[3];
+ { const uint32_t x31 = in2[2];
+ { const uint32_t x29 = in2[1];
+ { const uint32_t x27 = in2[0];
+ out[0] = ((0xffffffe + x5) - x27);
+ out[1] = ((0xffffffe + x7) - x29);
+ out[2] = ((0xffffffe + x9) - x31);
+ out[3] = ((0xffffffe + x11) - x33);
+ out[4] = ((0xffffffe + x13) - x35);
+ out[5] = ((0x7fffffe + x15) - x37);
+ out[6] = ((0xffffffc + x17) - x39);
+ out[7] = ((0xffffffe + x19) - x41);
+ out[8] = ((0xffffffe + x21) - x43);
+ out[9] = ((0xffffffe + x23) - x45);
+ out[10] = ((0xffffffe + x25) - x47);
+ out[11] = ((0x7fffffe + x24) - x46);
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.log b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.log
new file mode 100644
index 000000000..2374544c9
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
+ (((0x7fffffe + x24) - x46), ((0xffffffe + x25) - x47), ((0xffffffe + x23) - x45), ((0xffffffe + x21) - x43), ((0xffffffe + x19) - x41), ((0xffffffc + x17) - x39), ((0x7fffffe + x15) - x37), ((0xffffffe + x13) - x35), ((0xffffffe + x11) - x33), ((0xffffffe + x9) - x31), ((0xffffffe + x7) - x29), ((0xffffffe + x5) - x27)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.c b/src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.c
new file mode 100644
index 000000000..6c821d00d
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.c
@@ -0,0 +1,64 @@
+static void freeze(uint32_t out[12], const uint32_t in1[12]) {
+ { const uint32_t x21 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffff);
+ { 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 x4, 0x7ffffff);
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x7ffffff);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x7ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x7ffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x3ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x7fffffe);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x7ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x7ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x7ffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x7ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x3ffffff);
+ { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
+ { uint32_t x60 = (x59 & 0x7ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
+ { uint32_t x64 = (x59 & 0x7ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
+ { uint32_t x68 = (x59 & 0x7ffffff);
+ { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
+ { uint32_t x72 = (x59 & 0x7ffffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
+ { uint32_t x76 = (x59 & 0x7ffffff);
+ { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
+ { uint32_t x80 = (x59 & 0x3ffffff);
+ { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
+ { uint32_t x84 = (x59 & 0x7fffffe);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
+ { uint32_t x88 = (x59 & 0x7ffffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
+ { uint32_t x92 = (x59 & 0x7ffffff);
+ { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
+ { uint32_t x96 = (x59 & 0x7ffffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
+ { uint32_t x100 = (x59 & 0x7ffffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
+ { uint32_t x104 = (x59 & 0x3ffffff);
+ { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
+ out[0] = x62;
+ out[1] = x66;
+ out[2] = x70;
+ out[3] = x74;
+ out[4] = x78;
+ out[5] = x82;
+ out[6] = x86;
+ out[7] = x90;
+ out[8] = x94;
+ out[9] = x98;
+ out[10] = x102;
+ out[11] = x106;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.log b/src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.log
new file mode 100644
index 000000000..30671ff93
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.log
@@ -0,0 +1,44 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffff);
+ 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 x4, 0x7ffffff);
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x7ffffff);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x7ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x7ffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x3ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x7fffffe);
+ uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x7ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x7ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x7ffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x7ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x3ffffff);
+ uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
+ uint32_t x60 = (x59 & 0x7ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
+ uint32_t x64 = (x59 & 0x7ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
+ uint32_t x68 = (x59 & 0x7ffffff);
+ uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
+ uint32_t x72 = (x59 & 0x7ffffff);
+ uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
+ uint32_t x76 = (x59 & 0x7ffffff);
+ uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
+ uint32_t x80 = (x59 & 0x3ffffff);
+ uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
+ uint32_t x84 = (x59 & 0x7fffffe);
+ uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
+ uint32_t x88 = (x59 & 0x7ffffff);
+ uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
+ uint32_t x92 = (x59 & 0x7ffffff);
+ uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
+ uint32_t x96 = (x59 & 0x7ffffff);
+ uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
+ uint32_t x100 = (x59 & 0x7ffffff);
+ uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
+ uint32_t x104 = (x59 & 0x3ffffff);
+ uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
+ (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17_13limbs/feadd.c b/src/Specific/solinas32_2e336m17_13limbs/feadd.c
new file mode 100644
index 000000000..dbbe1da57
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/feadd.c
@@ -0,0 +1,42 @@
+static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = (x5 + x29);
+ out[1] = (x7 + x31);
+ out[2] = (x9 + x33);
+ out[3] = (x11 + x35);
+ out[4] = (x13 + x37);
+ out[5] = (x15 + x39);
+ out[6] = (x17 + x41);
+ out[7] = (x19 + x43);
+ out[8] = (x21 + x45);
+ out[9] = (x23 + x47);
+ out[10] = (x25 + x49);
+ out[11] = (x27 + x51);
+ out[12] = (x26 + x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.log b/src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.log
new file mode 100644
index 000000000..e64abeaba
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ ((x26 + x50), (x27 + x51), (x25 + x49), (x23 + x47), (x21 + x45), (x19 + x43), (x17 + x41), (x15 + x39), (x13 + x37), (x11 + x35), (x9 + x33), (x7 + x31), (x5 + x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17_13limbs/femul.c b/src/Specific/solinas32_2e336m17_13limbs/femul.c
new file mode 100644
index 000000000..46f0f1298
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/femul.c
@@ -0,0 +1,99 @@
+static void femul(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ { uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0x11 * (0x2 * ((uint64_t)x26 * x50))));
+ { uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0x11 * ((0x2 * ((uint64_t)x27 * x50)) + (0x2 * ((uint64_t)x26 * x51)))));
+ { uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x11 * ((0x2 * ((uint64_t)x25 * x50)) + ((0x2 * ((uint64_t)x27 * x51)) + (0x2 * ((uint64_t)x26 * x49))))));
+ { uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0x11 * ((0x2 * ((uint64_t)x23 * x50)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + (0x2 * ((uint64_t)x26 * x47)))))));
+ { uint64_t x57 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x19 * x29)))))))) + (0x11 * ((0x2 * ((uint64_t)x21 * x50)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (0x2 * ((uint64_t)x26 * x45))))))));
+ { uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0x11 * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
+ { uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x50)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (0x2 * ((uint64_t)x26 * x41))))))))));
+ { uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x50)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ { uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x50)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + (0x2 * ((uint64_t)x26 * x37))))))))))));
+ { uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x11 * ((0x2 * ((uint64_t)x11 * x50)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + (0x2 * ((uint64_t)x26 * x35)))))))))))));
+ { uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x11 * ((0x2 * ((uint64_t)x9 * x50)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((0x2 * ((uint64_t)x27 * x35)) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ { uint64_t x64 = (((uint64_t)x5 * x29) + (0x11 * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ { uint64_t x65 = (x64 >> 0x1a);
+ { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ { uint64_t x67 = (x65 + x63);
+ { uint64_t x68 = (x67 >> 0x1a);
+ { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ { uint64_t x70 = (x68 + x62);
+ { uint64_t x71 = (x70 >> 0x1a);
+ { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ { uint64_t x73 = (x71 + x61);
+ { uint64_t x74 = (x73 >> 0x1a);
+ { uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
+ { uint64_t x76 = (x74 + x60);
+ { uint64_t x77 = (x76 >> 0x1a);
+ { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ { uint64_t x79 = (x77 + x59);
+ { uint64_t x80 = (x79 >> 0x1a);
+ { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
+ { uint64_t x82 = (x80 + x58);
+ { uint64_t x83 = (x82 >> 0x19);
+ { uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ { uint64_t x85 = (x83 + x57);
+ { uint64_t x86 = (x85 >> 0x1a);
+ { uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
+ { uint64_t x88 = (x86 + x56);
+ { uint64_t x89 = (x88 >> 0x1a);
+ { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ { uint64_t x91 = (x89 + x55);
+ { uint64_t x92 = (x91 >> 0x1a);
+ { uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
+ { uint64_t x94 = (x92 + x54);
+ { uint64_t x95 = (x94 >> 0x1a);
+ { uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
+ { uint64_t x97 = (x95 + x53);
+ { uint64_t x98 = (x97 >> 0x1a);
+ { uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
+ { uint64_t x100 = (x98 + x52);
+ { uint64_t x101 = (x100 >> 0x19);
+ { uint32_t x102 = ((uint32_t)x100 & 0x1ffffff);
+ { uint64_t x103 = (x66 + (0x11 * x101));
+ { uint32_t x104 = (uint32_t) (x103 >> 0x1a);
+ { uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
+ { uint32_t x106 = (x104 + x69);
+ { uint32_t x107 = (x106 >> 0x1a);
+ { uint32_t x108 = (x106 & 0x3ffffff);
+ out[0] = x105;
+ out[1] = x108;
+ out[2] = (x107 + x72);
+ out[3] = x75;
+ out[4] = x78;
+ out[5] = x81;
+ out[6] = x84;
+ out[7] = x87;
+ out[8] = x90;
+ out[9] = x93;
+ out[10] = x96;
+ out[11] = x99;
+ out[12] = x102;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m17_13limbs/femulDisplay.log b/src/Specific/solinas32_2e336m17_13limbs/femulDisplay.log
new file mode 100644
index 000000000..574782726
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/femulDisplay.log
@@ -0,0 +1,64 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0x11 * (0x2 * ((uint64_t)x26 * x50))));
+ uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0x11 * ((0x2 * ((uint64_t)x27 * x50)) + (0x2 * ((uint64_t)x26 * x51)))));
+ uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x11 * ((0x2 * ((uint64_t)x25 * x50)) + ((0x2 * ((uint64_t)x27 * x51)) + (0x2 * ((uint64_t)x26 * x49))))));
+ uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0x11 * ((0x2 * ((uint64_t)x23 * x50)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + (0x2 * ((uint64_t)x26 * x47)))))));
+ uint64_t x57 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x19 * x29)))))))) + (0x11 * ((0x2 * ((uint64_t)x21 * x50)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (0x2 * ((uint64_t)x26 * x45))))))));
+ uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0x11 * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
+ uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x50)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (0x2 * ((uint64_t)x26 * x41))))))))));
+ uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0x11 * ((0x2 * ((uint64_t)x15 * x50)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x50)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + (0x2 * ((uint64_t)x26 * x37))))))))))));
+ uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x11 * ((0x2 * ((uint64_t)x11 * x50)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + (0x2 * ((uint64_t)x26 * x35)))))))))))));
+ uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x11 * ((0x2 * ((uint64_t)x9 * x50)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((0x2 * ((uint64_t)x27 * x35)) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ uint64_t x64 = (((uint64_t)x5 * x29) + (0x11 * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ uint64_t x65 = (x64 >> 0x1a);
+ uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ uint64_t x67 = (x65 + x63);
+ uint64_t x68 = (x67 >> 0x1a);
+ uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ uint64_t x70 = (x68 + x62);
+ uint64_t x71 = (x70 >> 0x1a);
+ uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ uint64_t x73 = (x71 + x61);
+ uint64_t x74 = (x73 >> 0x1a);
+ uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
+ uint64_t x76 = (x74 + x60);
+ uint64_t x77 = (x76 >> 0x1a);
+ uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ uint64_t x79 = (x77 + x59);
+ uint64_t x80 = (x79 >> 0x1a);
+ uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
+ uint64_t x82 = (x80 + x58);
+ uint64_t x83 = (x82 >> 0x19);
+ uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ uint64_t x85 = (x83 + x57);
+ uint64_t x86 = (x85 >> 0x1a);
+ uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
+ uint64_t x88 = (x86 + x56);
+ uint64_t x89 = (x88 >> 0x1a);
+ uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ uint64_t x91 = (x89 + x55);
+ uint64_t x92 = (x91 >> 0x1a);
+ uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
+ uint64_t x94 = (x92 + x54);
+ uint64_t x95 = (x94 >> 0x1a);
+ uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
+ uint64_t x97 = (x95 + x53);
+ uint64_t x98 = (x97 >> 0x1a);
+ uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
+ uint64_t x100 = (x98 + x52);
+ uint64_t x101 = (x100 >> 0x19);
+ uint32_t x102 = ((uint32_t)x100 & 0x1ffffff);
+ uint64_t x103 = (x66 + (0x11 * x101));
+ uint32_t x104 = (uint32_t) (x103 >> 0x1a);
+ uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
+ uint32_t x106 = (x104 + x69);
+ uint32_t x107 = (x106 >> 0x1a);
+ uint32_t x108 = (x106 & 0x3ffffff);
+ return (Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, (x107 + x72), Return x108, Return x105))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesquare.c b/src/Specific/solinas32_2e336m17_13limbs/fesquare.c
new file mode 100644
index 000000000..170b92b82
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesquare.c
@@ -0,0 +1,86 @@
+static void fesquare(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (0x2 * ((uint64_t)x23 * x23))));
+ { uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * ((0x2 * ((uint64_t)x24 * x23)) + (0x2 * ((uint64_t)x23 * x24)))));
+ { uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * ((0x2 * ((uint64_t)x22 * x23)) + ((0x2 * ((uint64_t)x24 * x24)) + (0x2 * ((uint64_t)x23 * x22))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * ((0x2 * ((uint64_t)x20 * x23)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (0x2 * ((uint64_t)x23 * x20)))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x11 * ((0x2 * ((uint64_t)x18 * x23)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (0x2 * ((uint64_t)x23 * x18))))))));
+ { uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x23)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (0x2 * ((uint64_t)x23 * x14))))))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x23)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x23)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (0x2 * ((uint64_t)x23 * x10))))))))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x23)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (0x2 * ((uint64_t)x23 * x8)))))))))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x23)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ { uint64_t x37 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ { uint64_t x38 = (x37 >> 0x1a);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ { uint64_t x40 = (x38 + x36);
+ { uint64_t x41 = (x40 >> 0x1a);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ { uint64_t x43 = (x41 + x35);
+ { uint64_t x44 = (x43 >> 0x1a);
+ { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ { uint64_t x46 = (x44 + x34);
+ { uint64_t x47 = (x46 >> 0x1a);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ { uint64_t x49 = (x47 + x33);
+ { uint64_t x50 = (x49 >> 0x1a);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ { uint64_t x52 = (x50 + x32);
+ { uint64_t x53 = (x52 >> 0x1a);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ { uint64_t x55 = (x53 + x31);
+ { uint64_t x56 = (x55 >> 0x19);
+ { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ { uint64_t x58 = (x56 + x30);
+ { uint64_t x59 = (x58 >> 0x1a);
+ { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ { uint64_t x61 = (x59 + x29);
+ { uint64_t x62 = (x61 >> 0x1a);
+ { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ { uint64_t x64 = (x62 + x28);
+ { uint64_t x65 = (x64 >> 0x1a);
+ { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ { uint64_t x67 = (x65 + x27);
+ { uint64_t x68 = (x67 >> 0x1a);
+ { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ { uint64_t x70 = (x68 + x26);
+ { uint64_t x71 = (x70 >> 0x1a);
+ { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ { uint64_t x73 = (x71 + x25);
+ { uint64_t x74 = (x73 >> 0x19);
+ { uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ { uint64_t x76 = (x39 + (0x11 * x74));
+ { uint32_t x77 = (uint32_t) (x76 >> 0x1a);
+ { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ { uint32_t x79 = (x77 + x42);
+ { uint32_t x80 = (x79 >> 0x1a);
+ { uint32_t x81 = (x79 & 0x3ffffff);
+ out[0] = x78;
+ out[1] = x81;
+ out[2] = (x80 + x45);
+ out[3] = x48;
+ out[4] = x51;
+ out[5] = x54;
+ out[6] = x57;
+ out[7] = x60;
+ out[8] = x63;
+ out[9] = x66;
+ out[10] = x69;
+ out[11] = x72;
+ out[12] = x75;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.log b/src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.log
new file mode 100644
index 000000000..6e6bedf99
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.log
@@ -0,0 +1,64 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (0x2 * ((uint64_t)x23 * x23))));
+ uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * ((0x2 * ((uint64_t)x24 * x23)) + (0x2 * ((uint64_t)x23 * x24)))));
+ uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * ((0x2 * ((uint64_t)x22 * x23)) + ((0x2 * ((uint64_t)x24 * x24)) + (0x2 * ((uint64_t)x23 * x22))))));
+ uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * ((0x2 * ((uint64_t)x20 * x23)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (0x2 * ((uint64_t)x23 * x20)))))));
+ uint64_t x30 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x11 * ((0x2 * ((uint64_t)x18 * x23)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (0x2 * ((uint64_t)x23 * x18))))))));
+ uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x23)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (0x2 * ((uint64_t)x23 * x14))))))))));
+ uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint64_t)x12 * x23)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x23)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (0x2 * ((uint64_t)x23 * x10))))))))))));
+ uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * ((0x2 * ((uint64_t)x8 * x23)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (0x2 * ((uint64_t)x23 * x8)))))))))))));
+ uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * ((0x2 * ((uint64_t)x6 * x23)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ uint64_t x37 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ uint64_t x38 = (x37 >> 0x1a);
+ uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ uint64_t x40 = (x38 + x36);
+ uint64_t x41 = (x40 >> 0x1a);
+ uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ uint64_t x43 = (x41 + x35);
+ uint64_t x44 = (x43 >> 0x1a);
+ uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ uint64_t x46 = (x44 + x34);
+ uint64_t x47 = (x46 >> 0x1a);
+ uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ uint64_t x49 = (x47 + x33);
+ uint64_t x50 = (x49 >> 0x1a);
+ uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ uint64_t x52 = (x50 + x32);
+ uint64_t x53 = (x52 >> 0x1a);
+ uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ uint64_t x55 = (x53 + x31);
+ uint64_t x56 = (x55 >> 0x19);
+ uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ uint64_t x58 = (x56 + x30);
+ uint64_t x59 = (x58 >> 0x1a);
+ uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ uint64_t x61 = (x59 + x29);
+ uint64_t x62 = (x61 >> 0x1a);
+ uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ uint64_t x64 = (x62 + x28);
+ uint64_t x65 = (x64 >> 0x1a);
+ uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ uint64_t x67 = (x65 + x27);
+ uint64_t x68 = (x67 >> 0x1a);
+ uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ uint64_t x70 = (x68 + x26);
+ uint64_t x71 = (x70 >> 0x1a);
+ uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ uint64_t x73 = (x71 + x25);
+ uint64_t x74 = (x73 >> 0x19);
+ uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ uint64_t x76 = (x39 + (0x11 * x74));
+ uint32_t x77 = (uint32_t) (x76 >> 0x1a);
+ uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ uint32_t x79 = (x77 + x42);
+ uint32_t x80 = (x79 >> 0x1a);
+ uint32_t x81 = (x79 & 0x3ffffff);
+ return (Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, (x80 + x45), Return x81, Return x78))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesub.c b/src/Specific/solinas32_2e336m17_13limbs/fesub.c
new file mode 100644
index 000000000..74bbeadc1
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesub.c
@@ -0,0 +1,42 @@
+static void fesub(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = ((0x7ffffde + x5) - x29);
+ out[1] = ((0x7fffffe + x7) - x31);
+ out[2] = ((0x7fffffe + x9) - x33);
+ out[3] = ((0x7fffffe + x11) - x35);
+ out[4] = ((0x7fffffe + x13) - x37);
+ out[5] = ((0x7fffffe + x15) - x39);
+ out[6] = ((0x3fffffe + x17) - x41);
+ out[7] = ((0x7fffffe + x19) - x43);
+ out[8] = ((0x7fffffe + x21) - x45);
+ out[9] = ((0x7fffffe + x23) - x47);
+ out[10] = ((0x7fffffe + x25) - x49);
+ out[11] = ((0x7fffffe + x27) - x51);
+ out[12] = ((0x3fffffe + x26) - x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.log b/src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.log
new file mode 100644
index 000000000..ca98fa373
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ (((0x3fffffe + x26) - x50), ((0x7fffffe + x27) - x51), ((0x7fffffe + x25) - x49), ((0x7fffffe + x23) - x47), ((0x7fffffe + x21) - x45), ((0x7fffffe + x19) - x43), ((0x3fffffe + x17) - x41), ((0x7fffffe + x15) - x39), ((0x7fffffe + x13) - x37), ((0x7fffffe + x11) - x35), ((0x7fffffe + x9) - x33), ((0x7fffffe + x7) - x31), ((0x7ffffde + x5) - x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17_13limbs/freeze.c b/src/Specific/solinas32_2e336m17_13limbs/freeze.c
new file mode 100644
index 000000000..e5d1174b1
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/freeze.c
@@ -0,0 +1,69 @@
+static void freeze(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x26, uint8_t x27 = 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 x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x3ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x3ffffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0x3ffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x3ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x3ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0x1ffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x3ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x3ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0x3ffffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x3ffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x3ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x1ffffff);
+ { uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ { uint32_t x65 = (x64 & 0x3ffffef);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ { uint32_t x69 = (x64 & 0x3ffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ { uint32_t x73 = (x64 & 0x3ffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ { uint32_t x77 = (x64 & 0x3ffffff);
+ { uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ { uint32_t x81 = (x64 & 0x3ffffff);
+ { uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ { uint32_t x85 = (x64 & 0x3ffffff);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ { uint32_t x89 = (x64 & 0x1ffffff);
+ { uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ { uint32_t x93 = (x64 & 0x3ffffff);
+ { uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ { uint32_t x97 = (x64 & 0x3ffffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ { uint32_t x101 = (x64 & 0x3ffffff);
+ { uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ { uint32_t x105 = (x64 & 0x3ffffff);
+ { uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ { uint32_t x109 = (x64 & 0x3ffffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ { uint32_t x113 = (x64 & 0x1ffffff);
+ { uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ out[0] = x67;
+ out[1] = x71;
+ out[2] = x75;
+ out[3] = x79;
+ out[4] = x83;
+ out[5] = x87;
+ out[6] = x91;
+ out[7] = x95;
+ out[8] = x99;
+ out[9] = x103;
+ out[10] = x107;
+ out[11] = x111;
+ out[12] = x115;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.log b/src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.log
new file mode 100644
index 000000000..4f2e96d47
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.log
@@ -0,0 +1,47 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x26, uint8_t x27 = 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 x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x3ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x3ffffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0x3ffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x3ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x3ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0x1ffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x3ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x3ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0x3ffffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x3ffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x3ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x1ffffff);
+ uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ uint32_t x65 = (x64 & 0x3ffffef);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ uint32_t x69 = (x64 & 0x3ffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ uint32_t x73 = (x64 & 0x3ffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ uint32_t x77 = (x64 & 0x3ffffff);
+ uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ uint32_t x81 = (x64 & 0x3ffffff);
+ uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ uint32_t x85 = (x64 & 0x3ffffff);
+ uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ uint32_t x89 = (x64 & 0x1ffffff);
+ uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ uint32_t x93 = (x64 & 0x3ffffff);
+ uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ uint32_t x97 = (x64 & 0x3ffffff);
+ uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ uint32_t x101 = (x64 & 0x3ffffff);
+ uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ uint32_t x105 = (x64 & 0x3ffffff);
+ uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ uint32_t x109 = (x64 & 0x3ffffff);
+ uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ uint32_t x113 = (x64 & 0x1ffffff);
+ uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ (Return x115, Return x111, Return x107, Return x103, Return x99, Return x95, Return x91, Return x87, Return x83, Return x79, Return x75, Return x71, Return x67))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3_13limbs/feadd.c b/src/Specific/solinas32_2e336m3_13limbs/feadd.c
new file mode 100644
index 000000000..dbbe1da57
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/feadd.c
@@ -0,0 +1,42 @@
+static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = (x5 + x29);
+ out[1] = (x7 + x31);
+ out[2] = (x9 + x33);
+ out[3] = (x11 + x35);
+ out[4] = (x13 + x37);
+ out[5] = (x15 + x39);
+ out[6] = (x17 + x41);
+ out[7] = (x19 + x43);
+ out[8] = (x21 + x45);
+ out[9] = (x23 + x47);
+ out[10] = (x25 + x49);
+ out[11] = (x27 + x51);
+ out[12] = (x26 + x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.log b/src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.log
new file mode 100644
index 000000000..e64abeaba
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ ((x26 + x50), (x27 + x51), (x25 + x49), (x23 + x47), (x21 + x45), (x19 + x43), (x17 + x41), (x15 + x39), (x13 + x37), (x11 + x35), (x9 + x33), (x7 + x31), (x5 + x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3_13limbs/femul.c b/src/Specific/solinas32_2e336m3_13limbs/femul.c
new file mode 100644
index 000000000..5605cb643
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/femul.c
@@ -0,0 +1,99 @@
+static void femul(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ { uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ { uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0x3 * (0x2 * ((uint64_t)x26 * x50))));
+ { uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0x3 * ((0x2 * ((uint64_t)x27 * x50)) + (0x2 * ((uint64_t)x26 * x51)))));
+ { uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x3 * ((0x2 * ((uint64_t)x25 * x50)) + ((0x2 * ((uint64_t)x27 * x51)) + (0x2 * ((uint64_t)x26 * x49))))));
+ { uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0x3 * ((0x2 * ((uint64_t)x23 * x50)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + (0x2 * ((uint64_t)x26 * x47)))))));
+ { uint64_t x57 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x19 * x29)))))))) + (0x3 * ((0x2 * ((uint64_t)x21 * x50)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (0x2 * ((uint64_t)x26 * x45))))))));
+ { uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0x3 * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
+ { uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x50)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (0x2 * ((uint64_t)x26 * x41))))))))));
+ { uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x50)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ { uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x50)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + (0x2 * ((uint64_t)x26 * x37))))))))))));
+ { uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x3 * ((0x2 * ((uint64_t)x11 * x50)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + (0x2 * ((uint64_t)x26 * x35)))))))))))));
+ { uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x3 * ((0x2 * ((uint64_t)x9 * x50)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((0x2 * ((uint64_t)x27 * x35)) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ { uint64_t x64 = (((uint64_t)x5 * x29) + (0x3 * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ { uint64_t x65 = (x64 >> 0x1a);
+ { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ { uint64_t x67 = (x65 + x63);
+ { uint64_t x68 = (x67 >> 0x1a);
+ { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ { uint64_t x70 = (x68 + x62);
+ { uint64_t x71 = (x70 >> 0x1a);
+ { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ { uint64_t x73 = (x71 + x61);
+ { uint64_t x74 = (x73 >> 0x1a);
+ { uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
+ { uint64_t x76 = (x74 + x60);
+ { uint64_t x77 = (x76 >> 0x1a);
+ { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ { uint64_t x79 = (x77 + x59);
+ { uint64_t x80 = (x79 >> 0x1a);
+ { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
+ { uint64_t x82 = (x80 + x58);
+ { uint64_t x83 = (x82 >> 0x19);
+ { uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ { uint64_t x85 = (x83 + x57);
+ { uint64_t x86 = (x85 >> 0x1a);
+ { uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
+ { uint64_t x88 = (x86 + x56);
+ { uint64_t x89 = (x88 >> 0x1a);
+ { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ { uint64_t x91 = (x89 + x55);
+ { uint64_t x92 = (x91 >> 0x1a);
+ { uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
+ { uint64_t x94 = (x92 + x54);
+ { uint64_t x95 = (x94 >> 0x1a);
+ { uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
+ { uint64_t x97 = (x95 + x53);
+ { uint64_t x98 = (x97 >> 0x1a);
+ { uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
+ { uint64_t x100 = (x98 + x52);
+ { uint64_t x101 = (x100 >> 0x19);
+ { uint32_t x102 = ((uint32_t)x100 & 0x1ffffff);
+ { uint64_t x103 = (x66 + (0x3 * x101));
+ { uint32_t x104 = (uint32_t) (x103 >> 0x1a);
+ { uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
+ { uint32_t x106 = (x104 + x69);
+ { uint32_t x107 = (x106 >> 0x1a);
+ { uint32_t x108 = (x106 & 0x3ffffff);
+ out[0] = x105;
+ out[1] = x108;
+ out[2] = (x107 + x72);
+ out[3] = x75;
+ out[4] = x78;
+ out[5] = x81;
+ out[6] = x84;
+ out[7] = x87;
+ out[8] = x90;
+ out[9] = x93;
+ out[10] = x96;
+ out[11] = x99;
+ out[12] = x102;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m3_13limbs/femulDisplay.log b/src/Specific/solinas32_2e336m3_13limbs/femulDisplay.log
new file mode 100644
index 000000000..8eade710d
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/femulDisplay.log
@@ -0,0 +1,64 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
+ uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0x3 * (0x2 * ((uint64_t)x26 * x50))));
+ uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0x3 * ((0x2 * ((uint64_t)x27 * x50)) + (0x2 * ((uint64_t)x26 * x51)))));
+ uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0x3 * ((0x2 * ((uint64_t)x25 * x50)) + ((0x2 * ((uint64_t)x27 * x51)) + (0x2 * ((uint64_t)x26 * x49))))));
+ uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0x3 * ((0x2 * ((uint64_t)x23 * x50)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + (0x2 * ((uint64_t)x26 * x47)))))));
+ uint64_t x57 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((uint64_t)x19 * x29)))))))) + (0x3 * ((0x2 * ((uint64_t)x21 * x50)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (0x2 * ((uint64_t)x26 * x45))))))));
+ uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0x3 * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
+ uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0x3 * ((0x2 * ((uint64_t)x17 * x50)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (0x2 * ((uint64_t)x26 * x41))))))))));
+ uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0x3 * ((0x2 * ((uint64_t)x15 * x50)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + (0x2 * ((uint64_t)x26 * x39)))))))))));
+ uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0x3 * ((0x2 * ((uint64_t)x13 * x50)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + (0x2 * ((uint64_t)x26 * x37))))))))))));
+ uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0x3 * ((0x2 * ((uint64_t)x11 * x50)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + (0x2 * ((uint64_t)x26 * x35)))))))))))));
+ uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0x3 * ((0x2 * ((uint64_t)x9 * x50)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((0x2 * ((uint64_t)x27 * x35)) + (0x2 * ((uint64_t)x26 * x33))))))))))))));
+ uint64_t x64 = (((uint64_t)x5 * x29) + (0x3 * ((0x2 * ((uint64_t)x7 * x50)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + (0x2 * ((uint64_t)x26 * x31)))))))))))))));
+ uint64_t x65 = (x64 >> 0x1a);
+ uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ uint64_t x67 = (x65 + x63);
+ uint64_t x68 = (x67 >> 0x1a);
+ uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ uint64_t x70 = (x68 + x62);
+ uint64_t x71 = (x70 >> 0x1a);
+ uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ uint64_t x73 = (x71 + x61);
+ uint64_t x74 = (x73 >> 0x1a);
+ uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
+ uint64_t x76 = (x74 + x60);
+ uint64_t x77 = (x76 >> 0x1a);
+ uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ uint64_t x79 = (x77 + x59);
+ uint64_t x80 = (x79 >> 0x1a);
+ uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
+ uint64_t x82 = (x80 + x58);
+ uint64_t x83 = (x82 >> 0x19);
+ uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ uint64_t x85 = (x83 + x57);
+ uint64_t x86 = (x85 >> 0x1a);
+ uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
+ uint64_t x88 = (x86 + x56);
+ uint64_t x89 = (x88 >> 0x1a);
+ uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ uint64_t x91 = (x89 + x55);
+ uint64_t x92 = (x91 >> 0x1a);
+ uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
+ uint64_t x94 = (x92 + x54);
+ uint64_t x95 = (x94 >> 0x1a);
+ uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
+ uint64_t x97 = (x95 + x53);
+ uint64_t x98 = (x97 >> 0x1a);
+ uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
+ uint64_t x100 = (x98 + x52);
+ uint64_t x101 = (x100 >> 0x19);
+ uint32_t x102 = ((uint32_t)x100 & 0x1ffffff);
+ uint64_t x103 = (x66 + (0x3 * x101));
+ uint32_t x104 = (uint32_t) (x103 >> 0x1a);
+ uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
+ uint32_t x106 = (x104 + x69);
+ uint32_t x107 = (x106 >> 0x1a);
+ uint32_t x108 = (x106 & 0x3ffffff);
+ return (Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, (x107 + x72), Return x108, Return x105))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesquare.c b/src/Specific/solinas32_2e336m3_13limbs/fesquare.c
new file mode 100644
index 000000000..dcde6d104
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesquare.c
@@ -0,0 +1,86 @@
+static void fesquare(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ { uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x3 * (0x2 * ((uint64_t)x23 * x23))));
+ { uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x3 * ((0x2 * ((uint64_t)x24 * x23)) + (0x2 * ((uint64_t)x23 * x24)))));
+ { uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x3 * ((0x2 * ((uint64_t)x22 * x23)) + ((0x2 * ((uint64_t)x24 * x24)) + (0x2 * ((uint64_t)x23 * x22))))));
+ { uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x3 * ((0x2 * ((uint64_t)x20 * x23)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (0x2 * ((uint64_t)x23 * x20)))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * ((0x2 * ((uint64_t)x18 * x23)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (0x2 * ((uint64_t)x23 * x18))))))));
+ { uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x23)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (0x2 * ((uint64_t)x23 * x14))))))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x23)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x23)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (0x2 * ((uint64_t)x23 * x10))))))))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x23)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (0x2 * ((uint64_t)x23 * x8)))))))))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x23)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ { uint64_t x37 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ { uint64_t x38 = (x37 >> 0x1a);
+ { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ { uint64_t x40 = (x38 + x36);
+ { uint64_t x41 = (x40 >> 0x1a);
+ { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ { uint64_t x43 = (x41 + x35);
+ { uint64_t x44 = (x43 >> 0x1a);
+ { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ { uint64_t x46 = (x44 + x34);
+ { uint64_t x47 = (x46 >> 0x1a);
+ { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ { uint64_t x49 = (x47 + x33);
+ { uint64_t x50 = (x49 >> 0x1a);
+ { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ { uint64_t x52 = (x50 + x32);
+ { uint64_t x53 = (x52 >> 0x1a);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ { uint64_t x55 = (x53 + x31);
+ { uint64_t x56 = (x55 >> 0x19);
+ { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ { uint64_t x58 = (x56 + x30);
+ { uint64_t x59 = (x58 >> 0x1a);
+ { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ { uint64_t x61 = (x59 + x29);
+ { uint64_t x62 = (x61 >> 0x1a);
+ { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ { uint64_t x64 = (x62 + x28);
+ { uint64_t x65 = (x64 >> 0x1a);
+ { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ { uint64_t x67 = (x65 + x27);
+ { uint64_t x68 = (x67 >> 0x1a);
+ { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ { uint64_t x70 = (x68 + x26);
+ { uint64_t x71 = (x70 >> 0x1a);
+ { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ { uint64_t x73 = (x71 + x25);
+ { uint64_t x74 = (x73 >> 0x19);
+ { uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ { uint64_t x76 = (x39 + (0x3 * x74));
+ { uint32_t x77 = (uint32_t) (x76 >> 0x1a);
+ { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ { uint32_t x79 = (x77 + x42);
+ { uint32_t x80 = (x79 >> 0x1a);
+ { uint32_t x81 = (x79 & 0x3ffffff);
+ out[0] = x78;
+ out[1] = x81;
+ out[2] = (x80 + x45);
+ out[3] = x48;
+ out[4] = x51;
+ out[5] = x54;
+ out[6] = x57;
+ out[7] = x60;
+ out[8] = x63;
+ out[9] = x66;
+ out[10] = x69;
+ out[11] = x72;
+ out[12] = x75;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.log b/src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.log
new file mode 100644
index 000000000..3b2fe9a61
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.log
@@ -0,0 +1,64 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
+ uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x3 * (0x2 * ((uint64_t)x23 * x23))));
+ uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x3 * ((0x2 * ((uint64_t)x24 * x23)) + (0x2 * ((uint64_t)x23 * x24)))));
+ uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x3 * ((0x2 * ((uint64_t)x22 * x23)) + ((0x2 * ((uint64_t)x24 * x24)) + (0x2 * ((uint64_t)x23 * x22))))));
+ uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x3 * ((0x2 * ((uint64_t)x20 * x23)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (0x2 * ((uint64_t)x23 * x20)))))));
+ uint64_t x30 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * ((0x2 * ((uint64_t)x18 * x23)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (0x2 * ((uint64_t)x23 * x18))))))));
+ uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x3 * ((0x2 * ((uint64_t)x14 * x23)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (0x2 * ((uint64_t)x23 * x14))))))))));
+ uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint64_t)x12 * x23)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (0x2 * ((uint64_t)x23 * x12)))))))))));
+ uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint64_t)x10 * x23)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (0x2 * ((uint64_t)x23 * x10))))))))))));
+ uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * ((0x2 * ((uint64_t)x8 * x23)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (0x2 * ((uint64_t)x23 * x8)))))))))))));
+ uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((0x2 * ((uint64_t)x6 * x23)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + (0x2 * ((uint64_t)x23 * x6))))))))))))));
+ uint64_t x37 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x23)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + (0x2 * ((uint64_t)x23 * x4)))))))))))))));
+ uint64_t x38 = (x37 >> 0x1a);
+ uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
+ uint64_t x40 = (x38 + x36);
+ uint64_t x41 = (x40 >> 0x1a);
+ uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
+ uint64_t x43 = (x41 + x35);
+ uint64_t x44 = (x43 >> 0x1a);
+ uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ uint64_t x46 = (x44 + x34);
+ uint64_t x47 = (x46 >> 0x1a);
+ uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
+ uint64_t x49 = (x47 + x33);
+ uint64_t x50 = (x49 >> 0x1a);
+ uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
+ uint64_t x52 = (x50 + x32);
+ uint64_t x53 = (x52 >> 0x1a);
+ uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ uint64_t x55 = (x53 + x31);
+ uint64_t x56 = (x55 >> 0x19);
+ uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ uint64_t x58 = (x56 + x30);
+ uint64_t x59 = (x58 >> 0x1a);
+ uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
+ uint64_t x61 = (x59 + x29);
+ uint64_t x62 = (x61 >> 0x1a);
+ uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
+ uint64_t x64 = (x62 + x28);
+ uint64_t x65 = (x64 >> 0x1a);
+ uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ uint64_t x67 = (x65 + x27);
+ uint64_t x68 = (x67 >> 0x1a);
+ uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
+ uint64_t x70 = (x68 + x26);
+ uint64_t x71 = (x70 >> 0x1a);
+ uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
+ uint64_t x73 = (x71 + x25);
+ uint64_t x74 = (x73 >> 0x19);
+ uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ uint64_t x76 = (x39 + (0x3 * x74));
+ uint32_t x77 = (uint32_t) (x76 >> 0x1a);
+ uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ uint32_t x79 = (x77 + x42);
+ uint32_t x80 = (x79 >> 0x1a);
+ uint32_t x81 = (x79 & 0x3ffffff);
+ return (Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, (x80 + x45), Return x81, Return x78))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesub.c b/src/Specific/solinas32_2e336m3_13limbs/fesub.c
new file mode 100644
index 000000000..a07602403
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesub.c
@@ -0,0 +1,42 @@
+static void fesub(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x50 = in2[12];
+ { const uint32_t x51 = in2[11];
+ { const uint32_t x49 = in2[10];
+ { const uint32_t x47 = in2[9];
+ { const uint32_t x45 = in2[8];
+ { const uint32_t x43 = in2[7];
+ { const uint32_t x41 = in2[6];
+ { const uint32_t x39 = in2[5];
+ { const uint32_t x37 = in2[4];
+ { const uint32_t x35 = in2[3];
+ { const uint32_t x33 = in2[2];
+ { const uint32_t x31 = in2[1];
+ { const uint32_t x29 = in2[0];
+ out[0] = ((Const 134217722 + x5) - x29);
+ out[1] = ((0x7fffffe + x7) - x31);
+ out[2] = ((0x7fffffe + x9) - x33);
+ out[3] = ((0x7fffffe + x11) - x35);
+ out[4] = ((0x7fffffe + x13) - x37);
+ out[5] = ((0x7fffffe + x15) - x39);
+ out[6] = ((0x3fffffe + x17) - x41);
+ out[7] = ((0x7fffffe + x19) - x43);
+ out[8] = ((0x7fffffe + x21) - x45);
+ out[9] = ((0x7fffffe + x23) - x47);
+ out[10] = ((0x7fffffe + x25) - x49);
+ out[11] = ((0x7fffffe + x27) - x51);
+ out[12] = ((0x3fffffe + x26) - x50);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.log b/src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.log
new file mode 100644
index 000000000..e9825a5a8
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
+ (((0x3fffffe + x26) - x50), ((0x7fffffe + x27) - x51), ((0x7fffffe + x25) - x49), ((0x7fffffe + x23) - x47), ((0x7fffffe + x21) - x45), ((0x7fffffe + x19) - x43), ((0x3fffffe + x17) - x41), ((0x7fffffe + x15) - x39), ((0x7fffffe + x13) - x37), ((0x7fffffe + x11) - x35), ((0x7fffffe + x9) - x33), ((0x7fffffe + x7) - x31), ((Const 134217722 + x5) - x29)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3_13limbs/freeze.c b/src/Specific/solinas32_2e336m3_13limbs/freeze.c
new file mode 100644
index 000000000..bb68e9547
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/freeze.c
@@ -0,0 +1,69 @@
+static void freeze(uint32_t out[13], const uint32_t in1[13]) {
+ { const uint32_t x23 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffd);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x3ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x3ffffff);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0x3ffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x3ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x3ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0x1ffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x3ffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x3ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0x3ffffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x3ffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x3ffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x1ffffff);
+ { uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ { uint32_t x65 = (x64 & 0x3fffffd);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ { uint32_t x69 = (x64 & 0x3ffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ { uint32_t x73 = (x64 & 0x3ffffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ { uint32_t x77 = (x64 & 0x3ffffff);
+ { uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ { uint32_t x81 = (x64 & 0x3ffffff);
+ { uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ { uint32_t x85 = (x64 & 0x3ffffff);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ { uint32_t x89 = (x64 & 0x1ffffff);
+ { uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ { uint32_t x93 = (x64 & 0x3ffffff);
+ { uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ { uint32_t x97 = (x64 & 0x3ffffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ { uint32_t x101 = (x64 & 0x3ffffff);
+ { uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ { uint32_t x105 = (x64 & 0x3ffffff);
+ { uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ { uint32_t x109 = (x64 & 0x3ffffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ { uint32_t x113 = (x64 & 0x1ffffff);
+ { uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ out[0] = x67;
+ out[1] = x71;
+ out[2] = x75;
+ out[3] = x79;
+ out[4] = x83;
+ out[5] = x87;
+ out[6] = x91;
+ out[7] = x95;
+ out[8] = x99;
+ out[9] = x103;
+ out[10] = x107;
+ out[11] = x111;
+ out[12] = x115;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.log b/src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.log
new file mode 100644
index 000000000..4f4256936
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.log
@@ -0,0 +1,47 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffd);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x3ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x3ffffff);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0x3ffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x3ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x3ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0x1ffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x3ffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x3ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0x3ffffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x3ffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x3ffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x1ffffff);
+ uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
+ uint32_t x65 = (x64 & 0x3fffffd);
+ uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
+ uint32_t x69 = (x64 & 0x3ffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
+ uint32_t x73 = (x64 & 0x3ffffff);
+ uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
+ uint32_t x77 = (x64 & 0x3ffffff);
+ uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
+ uint32_t x81 = (x64 & 0x3ffffff);
+ uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
+ uint32_t x85 = (x64 & 0x3ffffff);
+ uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
+ uint32_t x89 = (x64 & 0x1ffffff);
+ uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
+ uint32_t x93 = (x64 & 0x3ffffff);
+ uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
+ uint32_t x97 = (x64 & 0x3ffffff);
+ uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
+ uint32_t x101 = (x64 & 0x3ffffff);
+ uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
+ uint32_t x105 = (x64 & 0x3ffffff);
+ uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
+ uint32_t x109 = (x64 & 0x3ffffff);
+ uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
+ uint32_t x113 = (x64 & 0x1ffffff);
+ uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
+ (Return x115, Return x111, Return x107, Return x103, Return x99, Return x95, Return x91, Return x87, Return x83, Return x79, Return x75, Return x71, Return x67))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15_14limbs/feadd.c b/src/Specific/solinas32_2e338m15_14limbs/feadd.c
new file mode 100644
index 000000000..6b2a8feaf
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/feadd.c
@@ -0,0 +1,45 @@
+static void feadd(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x54 = in2[13];
+ { const uint32_t x55 = in2[12];
+ { const uint32_t x53 = in2[11];
+ { const uint32_t x51 = in2[10];
+ { const uint32_t x49 = in2[9];
+ { const uint32_t x47 = in2[8];
+ { const uint32_t x45 = in2[7];
+ { const uint32_t x43 = in2[6];
+ { const uint32_t x41 = in2[5];
+ { const uint32_t x39 = in2[4];
+ { const uint32_t x37 = in2[3];
+ { const uint32_t x35 = in2[2];
+ { const uint32_t x33 = in2[1];
+ { const uint32_t x31 = in2[0];
+ out[0] = (x5 + x31);
+ out[1] = (x7 + x33);
+ out[2] = (x9 + x35);
+ out[3] = (x11 + x37);
+ out[4] = (x13 + x39);
+ out[5] = (x15 + x41);
+ out[6] = (x17 + x43);
+ out[7] = (x19 + x45);
+ out[8] = (x21 + x47);
+ out[9] = (x23 + x49);
+ out[10] = (x25 + x51);
+ out[11] = (x27 + x53);
+ out[12] = (x29 + x55);
+ out[13] = (x28 + x54);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.log b/src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.log
new file mode 100644
index 000000000..ff11bcba0
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
+ ((x28 + x54), (x29 + x55), (x27 + x53), (x25 + x51), (x23 + x49), (x21 + x47), (x19 + x45), (x17 + x43), (x15 + x41), (x13 + x39), (x11 + x37), (x9 + x35), (x7 + x33), (x5 + x31)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15_14limbs/femul.c b/src/Specific/solinas32_2e338m15_14limbs/femul.c
new file mode 100644
index 000000000..61d245bf8
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/femul.c
@@ -0,0 +1,106 @@
+static void femul(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x54 = in2[13];
+ { const uint32_t x55 = in2[12];
+ { const uint32_t x53 = in2[11];
+ { const uint32_t x51 = in2[10];
+ { const uint32_t x49 = in2[9];
+ { const uint32_t x47 = in2[8];
+ { const uint32_t x45 = in2[7];
+ { const uint32_t x43 = in2[6];
+ { const uint32_t x41 = in2[5];
+ { const uint32_t x39 = in2[4];
+ { const uint32_t x37 = in2[3];
+ { const uint32_t x35 = in2[2];
+ { const uint32_t x33 = in2[1];
+ { const uint32_t x31 = in2[0];
+ { uint64_t x56 = (((uint64_t)x5 * x54) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((0x2 * ((uint64_t)x27 * x35)) + ((0x2 * ((uint64_t)x29 * x33)) + ((uint64_t)x28 * x31))))))))))))));
+ { uint64_t x57 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + ((uint64_t)x29 * x31))))))))))))) + (0xf * ((uint64_t)x28 * x54)));
+ { uint64_t x58 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + ((0x2 * ((uint64_t)x25 * x33)) + ((uint64_t)x27 * x31)))))))))))) + (0xf * (((uint64_t)x29 * x54) + ((uint64_t)x28 * x55))));
+ { uint64_t x59 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((uint64_t)x25 * x31))))))))))) + (0xf * (((uint64_t)x27 * x54) + (((uint64_t)x29 * x55) + ((uint64_t)x28 * x53)))));
+ { uint64_t x60 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + ((0x2 * ((uint64_t)x21 * x33)) + ((uint64_t)x23 * x31)))))))))) + (0xf * (((uint64_t)x25 * x54) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x28 * x51))))));
+ { uint64_t x61 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x21 * x31))))))))) + (0xf * (((uint64_t)x23 * x54) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + ((uint64_t)x28 * x49)))))));
+ { uint64_t x62 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((uint64_t)x19 * x31)))))))) + (0xf * ((0x2 * ((uint64_t)x21 * x54)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + (0x2 * ((uint64_t)x28 * x47)))))))));
+ { uint64_t x63 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((uint64_t)x17 * x31))))))) + (0xf * (((uint64_t)x19 * x54) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((uint64_t)x28 * x45)))))))));
+ { uint64_t x64 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((uint64_t)x15 * x31)))))) + (0xf * (((uint64_t)x17 * x54) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (((uint64_t)x29 * x45) + ((uint64_t)x28 * x43))))))))));
+ { uint64_t x65 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((uint64_t)x13 * x31))))) + (0xf * (((uint64_t)x15 * x54) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + ((uint64_t)x28 * x41)))))))))));
+ { uint64_t x66 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((uint64_t)x11 * x31)))) + (0xf * (((uint64_t)x13 * x54) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x28 * x39))))))))))));
+ { uint64_t x67 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((uint64_t)x9 * x31))) + (0xf * (((uint64_t)x11 * x54) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + ((uint64_t)x28 * x37)))))))))))));
+ { uint64_t x68 = ((((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)) + (0xf * (((uint64_t)x9 * x54) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x28 * x35))))))))))))));
+ { uint64_t x69 = (((uint64_t)x5 * x31) + (0xf * ((0x2 * ((uint64_t)x7 * x54)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((0x2 * ((uint64_t)x29 * x35)) + (0x2 * ((uint64_t)x28 * x33))))))))))))))));
+ { uint64_t x70 = (x69 >> 0x19);
+ { uint32_t x71 = ((uint32_t)x69 & 0x1ffffff);
+ { uint64_t x72 = (x70 + x68);
+ { uint64_t x73 = (x72 >> 0x18);
+ { uint32_t x74 = ((uint32_t)x72 & 0xffffff);
+ { uint64_t x75 = (x73 + x67);
+ { uint64_t x76 = (x75 >> 0x18);
+ { uint32_t x77 = ((uint32_t)x75 & 0xffffff);
+ { uint64_t x78 = (x76 + x66);
+ { uint64_t x79 = (x78 >> 0x18);
+ { uint32_t x80 = ((uint32_t)x78 & 0xffffff);
+ { uint64_t x81 = (x79 + x65);
+ { uint64_t x82 = (x81 >> 0x18);
+ { uint32_t x83 = ((uint32_t)x81 & 0xffffff);
+ { uint64_t x84 = (x82 + x64);
+ { uint64_t x85 = (x84 >> 0x18);
+ { uint32_t x86 = ((uint32_t)x84 & 0xffffff);
+ { uint64_t x87 = (x85 + x63);
+ { uint64_t x88 = (x87 >> 0x18);
+ { uint32_t x89 = ((uint32_t)x87 & 0xffffff);
+ { uint64_t x90 = (x88 + x62);
+ { uint64_t x91 = (x90 >> 0x19);
+ { uint32_t x92 = ((uint32_t)x90 & 0x1ffffff);
+ { uint64_t x93 = (x91 + x61);
+ { uint64_t x94 = (x93 >> 0x18);
+ { uint32_t x95 = ((uint32_t)x93 & 0xffffff);
+ { uint64_t x96 = (x94 + x60);
+ { uint64_t x97 = (x96 >> 0x18);
+ { uint32_t x98 = ((uint32_t)x96 & 0xffffff);
+ { uint64_t x99 = (x97 + x59);
+ { uint64_t x100 = (x99 >> 0x18);
+ { uint32_t x101 = ((uint32_t)x99 & 0xffffff);
+ { uint64_t x102 = (x100 + x58);
+ { uint64_t x103 = (x102 >> 0x18);
+ { uint32_t x104 = ((uint32_t)x102 & 0xffffff);
+ { uint64_t x105 = (x103 + x57);
+ { uint64_t x106 = (x105 >> 0x18);
+ { uint32_t x107 = ((uint32_t)x105 & 0xffffff);
+ { uint64_t x108 = (x106 + x56);
+ { uint64_t x109 = (x108 >> 0x18);
+ { uint32_t x110 = ((uint32_t)x108 & 0xffffff);
+ { uint64_t x111 = (x71 + (0xf * x109));
+ { uint32_t x112 = (uint32_t) (x111 >> 0x19);
+ { uint32_t x113 = ((uint32_t)x111 & 0x1ffffff);
+ { uint32_t x114 = (x112 + x74);
+ { uint32_t x115 = (x114 >> 0x18);
+ { uint32_t x116 = (x114 & 0xffffff);
+ out[0] = x113;
+ out[1] = x116;
+ out[2] = (x115 + x77);
+ out[3] = x80;
+ out[4] = x83;
+ out[5] = x86;
+ out[6] = x89;
+ out[7] = x92;
+ out[8] = x95;
+ out[9] = x98;
+ out[10] = x101;
+ out[11] = x104;
+ out[12] = x107;
+ out[13] = x110;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e338m15_14limbs/femulDisplay.log b/src/Specific/solinas32_2e338m15_14limbs/femulDisplay.log
new file mode 100644
index 000000000..dcbb92107
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/femulDisplay.log
@@ -0,0 +1,68 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
+ uint64_t x56 = (((uint64_t)x5 * x54) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((0x2 * ((uint64_t)x27 * x35)) + ((0x2 * ((uint64_t)x29 * x33)) + ((uint64_t)x28 * x31))))))))))))));
+ uint64_t x57 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((0x2 * ((uint64_t)x25 * x35)) + ((0x2 * ((uint64_t)x27 * x33)) + ((uint64_t)x29 * x31))))))))))))) + (0xf * ((uint64_t)x28 * x54)));
+ uint64_t x58 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + ((0x2 * ((uint64_t)x25 * x33)) + ((uint64_t)x27 * x31)))))))))))) + (0xf * (((uint64_t)x29 * x54) + ((uint64_t)x28 * x55))));
+ uint64_t x59 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((uint64_t)x25 * x31))))))))))) + (0xf * (((uint64_t)x27 * x54) + (((uint64_t)x29 * x55) + ((uint64_t)x28 * x53)))));
+ uint64_t x60 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + ((0x2 * ((uint64_t)x21 * x33)) + ((uint64_t)x23 * x31)))))))))) + (0xf * (((uint64_t)x25 * x54) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x28 * x51))))));
+ uint64_t x61 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x21 * x31))))))))) + (0xf * (((uint64_t)x23 * x54) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + ((uint64_t)x28 * x49)))))));
+ uint64_t x62 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((uint64_t)x19 * x31)))))))) + (0xf * ((0x2 * ((uint64_t)x21 * x54)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + (0x2 * ((uint64_t)x28 * x47)))))))));
+ uint64_t x63 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((uint64_t)x17 * x31))))))) + (0xf * (((uint64_t)x19 * x54) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((uint64_t)x28 * x45)))))))));
+ uint64_t x64 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((uint64_t)x15 * x31)))))) + (0xf * (((uint64_t)x17 * x54) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (((uint64_t)x29 * x45) + ((uint64_t)x28 * x43))))))))));
+ uint64_t x65 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((uint64_t)x13 * x31))))) + (0xf * (((uint64_t)x15 * x54) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + ((uint64_t)x28 * x41)))))))))));
+ uint64_t x66 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((uint64_t)x11 * x31)))) + (0xf * (((uint64_t)x13 * x54) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x28 * x39))))))))))));
+ uint64_t x67 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((uint64_t)x9 * x31))) + (0xf * (((uint64_t)x11 * x54) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + ((uint64_t)x28 * x37)))))))))))));
+ uint64_t x68 = ((((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)) + (0xf * (((uint64_t)x9 * x54) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x28 * x35))))))))))))));
+ uint64_t x69 = (((uint64_t)x5 * x31) + (0xf * ((0x2 * ((uint64_t)x7 * x54)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((0x2 * ((uint64_t)x29 * x35)) + (0x2 * ((uint64_t)x28 * x33))))))))))))))));
+ uint64_t x70 = (x69 >> 0x19);
+ uint32_t x71 = ((uint32_t)x69 & 0x1ffffff);
+ uint64_t x72 = (x70 + x68);
+ uint64_t x73 = (x72 >> 0x18);
+ uint32_t x74 = ((uint32_t)x72 & 0xffffff);
+ uint64_t x75 = (x73 + x67);
+ uint64_t x76 = (x75 >> 0x18);
+ uint32_t x77 = ((uint32_t)x75 & 0xffffff);
+ uint64_t x78 = (x76 + x66);
+ uint64_t x79 = (x78 >> 0x18);
+ uint32_t x80 = ((uint32_t)x78 & 0xffffff);
+ uint64_t x81 = (x79 + x65);
+ uint64_t x82 = (x81 >> 0x18);
+ uint32_t x83 = ((uint32_t)x81 & 0xffffff);
+ uint64_t x84 = (x82 + x64);
+ uint64_t x85 = (x84 >> 0x18);
+ uint32_t x86 = ((uint32_t)x84 & 0xffffff);
+ uint64_t x87 = (x85 + x63);
+ uint64_t x88 = (x87 >> 0x18);
+ uint32_t x89 = ((uint32_t)x87 & 0xffffff);
+ uint64_t x90 = (x88 + x62);
+ uint64_t x91 = (x90 >> 0x19);
+ uint32_t x92 = ((uint32_t)x90 & 0x1ffffff);
+ uint64_t x93 = (x91 + x61);
+ uint64_t x94 = (x93 >> 0x18);
+ uint32_t x95 = ((uint32_t)x93 & 0xffffff);
+ uint64_t x96 = (x94 + x60);
+ uint64_t x97 = (x96 >> 0x18);
+ uint32_t x98 = ((uint32_t)x96 & 0xffffff);
+ uint64_t x99 = (x97 + x59);
+ uint64_t x100 = (x99 >> 0x18);
+ uint32_t x101 = ((uint32_t)x99 & 0xffffff);
+ uint64_t x102 = (x100 + x58);
+ uint64_t x103 = (x102 >> 0x18);
+ uint32_t x104 = ((uint32_t)x102 & 0xffffff);
+ uint64_t x105 = (x103 + x57);
+ uint64_t x106 = (x105 >> 0x18);
+ uint32_t x107 = ((uint32_t)x105 & 0xffffff);
+ uint64_t x108 = (x106 + x56);
+ uint64_t x109 = (x108 >> 0x18);
+ uint32_t x110 = ((uint32_t)x108 & 0xffffff);
+ uint64_t x111 = (x71 + (0xf * x109));
+ uint32_t x112 = (uint32_t) (x111 >> 0x19);
+ uint32_t x113 = ((uint32_t)x111 & 0x1ffffff);
+ uint32_t x114 = (x112 + x74);
+ uint32_t x115 = (x114 >> 0x18);
+ uint32_t x116 = (x114 & 0xffffff);
+ return (Return x110, Return x107, Return x104, Return x101, Return x98, Return x95, Return x92, Return x89, Return x86, Return x83, Return x80, (x115 + x77), Return x116, Return x113))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesquare.c b/src/Specific/solinas32_2e338m15_14limbs/fesquare.c
new file mode 100644
index 000000000..37e2bc76c
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesquare.c
@@ -0,0 +1,92 @@
+static void fesquare(uint32_t out[14], const uint32_t in1[14]) {
+ { const uint32_t x25 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x27 = (((uint64_t)x2 * x25) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x25 * x2))))))))))))));
+ { uint64_t x28 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0xf * ((uint64_t)x25 * x25)));
+ { uint64_t x29 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0xf * (((uint64_t)x26 * x25) + ((uint64_t)x25 * x26))));
+ { uint64_t x30 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0xf * (((uint64_t)x24 * x25) + (((uint64_t)x26 * x26) + ((uint64_t)x25 * x24)))));
+ { uint64_t x31 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xf * (((uint64_t)x22 * x25) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((uint64_t)x25 * x22))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xf * (((uint64_t)x20 * x25) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((uint64_t)x25 * x20)))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xf * ((0x2 * ((uint64_t)x18 * x25)) + ((0x2 * ((uint64_t)x20 * x26)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + ((0x2 * ((uint64_t)x26 * x20)) + (0x2 * ((uint64_t)x25 * x18)))))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * (((uint64_t)x16 * x25) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((uint64_t)x25 * x16)))))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x25) + (((uint64_t)x16 * x26) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + (((uint64_t)x26 * x16) + ((uint64_t)x25 * x14))))))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x25) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + ((uint64_t)x25 * x12)))))))))));
+ { uint64_t x37 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x25) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((uint64_t)x25 * x10))))))))))));
+ { uint64_t x38 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x25) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + ((uint64_t)x25 * x8)))))))))))));
+ { uint64_t x39 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x25) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + ((uint64_t)x25 * x6))))))))))))));
+ { uint64_t x40 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x25)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + (0x2 * ((uint64_t)x25 * x4))))))))))))))));
+ { uint64_t x41 = (x40 >> 0x19);
+ { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ { uint64_t x43 = (x41 + x39);
+ { uint64_t x44 = (x43 >> 0x18);
+ { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ { uint64_t x46 = (x44 + x38);
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x37);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x36);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x35);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x56 + x34);
+ { uint64_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ { uint64_t x61 = (x59 + x33);
+ { uint64_t x62 = (x61 >> 0x19);
+ { uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ { uint64_t x64 = (x62 + x32);
+ { uint64_t x65 = (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint64_t x67 = (x65 + x31);
+ { uint64_t x68 = (x67 >> 0x18);
+ { uint32_t x69 = ((uint32_t)x67 & 0xffffff);
+ { uint64_t x70 = (x68 + x30);
+ { uint64_t x71 = (x70 >> 0x18);
+ { uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ { uint64_t x73 = (x71 + x29);
+ { uint64_t x74 = (x73 >> 0x18);
+ { uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ { uint64_t x76 = (x74 + x28);
+ { uint64_t x77 = (x76 >> 0x18);
+ { uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ { uint64_t x79 = (x77 + x27);
+ { uint64_t x80 = (x79 >> 0x18);
+ { uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ { uint64_t x82 = (x42 + (0xf * x80));
+ { uint32_t x83 = (uint32_t) (x82 >> 0x19);
+ { uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ { uint32_t x85 = (x83 + x45);
+ { uint32_t x86 = (x85 >> 0x18);
+ { uint32_t x87 = (x85 & 0xffffff);
+ out[0] = x84;
+ out[1] = x87;
+ out[2] = (x86 + x48);
+ out[3] = x51;
+ out[4] = x54;
+ out[5] = x57;
+ out[6] = x60;
+ out[7] = x63;
+ out[8] = x66;
+ out[9] = x69;
+ out[10] = x72;
+ out[11] = x75;
+ out[12] = x78;
+ out[13] = x81;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.log b/src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.log
new file mode 100644
index 000000000..34d67b773
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.log
@@ -0,0 +1,68 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x27 = (((uint64_t)x2 * x25) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x25 * x2))))))))))))));
+ uint64_t x28 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0xf * ((uint64_t)x25 * x25)));
+ uint64_t x29 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0xf * (((uint64_t)x26 * x25) + ((uint64_t)x25 * x26))));
+ uint64_t x30 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0xf * (((uint64_t)x24 * x25) + (((uint64_t)x26 * x26) + ((uint64_t)x25 * x24)))));
+ uint64_t x31 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xf * (((uint64_t)x22 * x25) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((uint64_t)x25 * x22))))));
+ uint64_t x32 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xf * (((uint64_t)x20 * x25) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((uint64_t)x25 * x20)))))));
+ uint64_t x33 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xf * ((0x2 * ((uint64_t)x18 * x25)) + ((0x2 * ((uint64_t)x20 * x26)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + ((0x2 * ((uint64_t)x26 * x20)) + (0x2 * ((uint64_t)x25 * x18)))))))));
+ uint64_t x34 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * (((uint64_t)x16 * x25) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((uint64_t)x25 * x16)))))))));
+ uint64_t x35 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x25) + (((uint64_t)x16 * x26) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + (((uint64_t)x26 * x16) + ((uint64_t)x25 * x14))))))))));
+ uint64_t x36 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x25) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + ((uint64_t)x25 * x12)))))))))));
+ uint64_t x37 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x25) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((uint64_t)x25 * x10))))))))))));
+ uint64_t x38 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x25) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + ((uint64_t)x25 * x8)))))))))))));
+ uint64_t x39 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x25) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + ((uint64_t)x25 * x6))))))))))))));
+ uint64_t x40 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x25)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + (0x2 * ((uint64_t)x25 * x4))))))))))))))));
+ uint64_t x41 = (x40 >> 0x19);
+ uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
+ uint64_t x43 = (x41 + x39);
+ uint64_t x44 = (x43 >> 0x18);
+ uint32_t x45 = ((uint32_t)x43 & 0xffffff);
+ uint64_t x46 = (x44 + x38);
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x37);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x36);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x35);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x56 + x34);
+ uint64_t x59 = (x58 >> 0x18);
+ uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ uint64_t x61 = (x59 + x33);
+ uint64_t x62 = (x61 >> 0x19);
+ uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ uint64_t x64 = (x62 + x32);
+ uint64_t x65 = (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint64_t x67 = (x65 + x31);
+ uint64_t x68 = (x67 >> 0x18);
+ uint32_t x69 = ((uint32_t)x67 & 0xffffff);
+ uint64_t x70 = (x68 + x30);
+ uint64_t x71 = (x70 >> 0x18);
+ uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ uint64_t x73 = (x71 + x29);
+ uint64_t x74 = (x73 >> 0x18);
+ uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ uint64_t x76 = (x74 + x28);
+ uint64_t x77 = (x76 >> 0x18);
+ uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ uint64_t x79 = (x77 + x27);
+ uint64_t x80 = (x79 >> 0x18);
+ uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ uint64_t x82 = (x42 + (0xf * x80));
+ uint32_t x83 = (uint32_t) (x82 >> 0x19);
+ uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ uint32_t x85 = (x83 + x45);
+ uint32_t x86 = (x85 >> 0x18);
+ uint32_t x87 = (x85 & 0xffffff);
+ return (Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, (x86 + x48), Return x87, Return x84))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesub.c b/src/Specific/solinas32_2e338m15_14limbs/fesub.c
new file mode 100644
index 000000000..c18d70747
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesub.c
@@ -0,0 +1,45 @@
+static void fesub(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x54 = in2[13];
+ { const uint32_t x55 = in2[12];
+ { const uint32_t x53 = in2[11];
+ { const uint32_t x51 = in2[10];
+ { const uint32_t x49 = in2[9];
+ { const uint32_t x47 = in2[8];
+ { const uint32_t x45 = in2[7];
+ { const uint32_t x43 = in2[6];
+ { const uint32_t x41 = in2[5];
+ { const uint32_t x39 = in2[4];
+ { const uint32_t x37 = in2[3];
+ { const uint32_t x35 = in2[2];
+ { const uint32_t x33 = in2[1];
+ { const uint32_t x31 = in2[0];
+ out[0] = ((Const 67108834 + x5) - x31);
+ out[1] = ((0x1fffffe + x7) - x33);
+ out[2] = ((0x1fffffe + x9) - x35);
+ out[3] = ((0x1fffffe + x11) - x37);
+ out[4] = ((0x1fffffe + x13) - x39);
+ out[5] = ((0x1fffffe + x15) - x41);
+ out[6] = ((0x1fffffe + x17) - x43);
+ out[7] = ((0x3fffffe + x19) - x45);
+ out[8] = ((0x1fffffe + x21) - x47);
+ out[9] = ((0x1fffffe + x23) - x49);
+ out[10] = ((0x1fffffe + x25) - x51);
+ out[11] = ((0x1fffffe + x27) - x53);
+ out[12] = ((0x1fffffe + x29) - x55);
+ out[13] = ((0x1fffffe + x28) - x54);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.log b/src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.log
new file mode 100644
index 000000000..0271c29fd
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
+ (((0x1fffffe + x28) - x54), ((0x1fffffe + x29) - x55), ((0x1fffffe + x27) - x53), ((0x1fffffe + x25) - x51), ((0x1fffffe + x23) - x49), ((0x1fffffe + x21) - x47), ((0x3fffffe + x19) - x45), ((0x1fffffe + x17) - x43), ((0x1fffffe + x15) - x41), ((0x1fffffe + x13) - x39), ((0x1fffffe + x11) - x37), ((0x1fffffe + x9) - x35), ((0x1fffffe + x7) - x33), ((Const 67108834 + x5) - x31)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15_14limbs/freeze.c b/src/Specific/solinas32_2e338m15_14limbs/freeze.c
new file mode 100644
index 000000000..e70224f70
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/freeze.c
@@ -0,0 +1,74 @@
+static void freeze(uint32_t out[14], const uint32_t in1[14]) {
+ { const uint32_t x25 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffff1);
+ { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x4, 0xffffff);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x6, 0xffffff);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x8, 0xffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x10, 0xffffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x12, 0xffffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x14, 0xffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x16, 0x1ffffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x18, 0xffffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x20, 0xffffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x22, 0xffffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x24, 0xffffff);
+ { uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x26, 0xffffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x25, 0xffffff);
+ { uint32_t x69 = cmovznz32(x68, 0x0, 0xffffffff);
+ { uint32_t x70 = (x69 & 0x1fffff1);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x28, Return x70);
+ { uint32_t x74 = (x69 & 0xffffff);
+ { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x31, Return x74);
+ { uint32_t x78 = (x69 & 0xffffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x34, Return x78);
+ { uint32_t x82 = (x69 & 0xffffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x37, Return x82);
+ { uint32_t x86 = (x69 & 0xffffff);
+ { uint32_t x88, uint8_t x89 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x40, Return x86);
+ { uint32_t x90 = (x69 & 0xffffff);
+ { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x43, Return x90);
+ { uint32_t x94 = (x69 & 0xffffff);
+ { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x46, Return x94);
+ { uint32_t x98 = (x69 & 0x1ffffff);
+ { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x49, Return x98);
+ { uint32_t x102 = (x69 & 0xffffff);
+ { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x52, Return x102);
+ { uint32_t x106 = (x69 & 0xffffff);
+ { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x55, Return x106);
+ { uint32_t x110 = (x69 & 0xffffff);
+ { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x58, Return x110);
+ { uint32_t x114 = (x69 & 0xffffff);
+ { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x61, Return x114);
+ { uint32_t x118 = (x69 & 0xffffff);
+ { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x64, Return x118);
+ { uint32_t x122 = (x69 & 0xffffff);
+ { uint32_t x124, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x67, Return x122);
+ out[0] = x72;
+ out[1] = x76;
+ out[2] = x80;
+ out[3] = x84;
+ out[4] = x88;
+ out[5] = x92;
+ out[6] = x96;
+ out[7] = x100;
+ out[8] = x104;
+ out[9] = x108;
+ out[10] = x112;
+ out[11] = x116;
+ out[12] = x120;
+ out[13] = x124;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.log b/src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.log
new file mode 100644
index 000000000..55b57957b
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.log
@@ -0,0 +1,50 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffff1);
+ uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x4, 0xffffff);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x6, 0xffffff);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x8, 0xffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x10, 0xffffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x12, 0xffffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x14, 0xffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x16, 0x1ffffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x18, 0xffffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x20, 0xffffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x22, 0xffffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x24, 0xffffff);
+ uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x26, 0xffffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x25, 0xffffff);
+ uint32_t x69 = cmovznz32(x68, 0x0, 0xffffffff);
+ uint32_t x70 = (x69 & 0x1fffff1);
+ uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x28, Return x70);
+ uint32_t x74 = (x69 & 0xffffff);
+ uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x31, Return x74);
+ uint32_t x78 = (x69 & 0xffffff);
+ uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x34, Return x78);
+ uint32_t x82 = (x69 & 0xffffff);
+ uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x37, Return x82);
+ uint32_t x86 = (x69 & 0xffffff);
+ uint32_t x88, uint8_t x89 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x40, Return x86);
+ uint32_t x90 = (x69 & 0xffffff);
+ uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x43, Return x90);
+ uint32_t x94 = (x69 & 0xffffff);
+ uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x46, Return x94);
+ uint32_t x98 = (x69 & 0x1ffffff);
+ uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x49, Return x98);
+ uint32_t x102 = (x69 & 0xffffff);
+ uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x52, Return x102);
+ uint32_t x106 = (x69 & 0xffffff);
+ uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x55, Return x106);
+ uint32_t x110 = (x69 & 0xffffff);
+ uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x58, Return x110);
+ uint32_t x114 = (x69 & 0xffffff);
+ uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x61, Return x114);
+ uint32_t x118 = (x69 & 0xffffff);
+ uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x64, Return x118);
+ uint32_t x122 = (x69 & 0xffffff);
+ uint32_t x124, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x67, Return x122);
+ (Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92, Return x88, Return x84, Return x80, Return x76, Return x72))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25_15limbs/feadd.c b/src/Specific/solinas32_2e369m25_15limbs/feadd.c
new file mode 100644
index 000000000..72a59425b
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/feadd.c
@@ -0,0 +1,48 @@
+static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x58 = in2[14];
+ { const uint32_t x59 = in2[13];
+ { const uint32_t x57 = in2[12];
+ { const uint32_t x55 = in2[11];
+ { const uint32_t x53 = in2[10];
+ { const uint32_t x51 = in2[9];
+ { const uint32_t x49 = in2[8];
+ { const uint32_t x47 = in2[7];
+ { const uint32_t x45 = in2[6];
+ { const uint32_t x43 = in2[5];
+ { const uint32_t x41 = in2[4];
+ { const uint32_t x39 = in2[3];
+ { const uint32_t x37 = in2[2];
+ { const uint32_t x35 = in2[1];
+ { const uint32_t x33 = in2[0];
+ out[0] = (x5 + x33);
+ out[1] = (x7 + x35);
+ out[2] = (x9 + x37);
+ out[3] = (x11 + x39);
+ out[4] = (x13 + x41);
+ out[5] = (x15 + x43);
+ out[6] = (x17 + x45);
+ out[7] = (x19 + x47);
+ out[8] = (x21 + x49);
+ out[9] = (x23 + x51);
+ out[10] = (x25 + x53);
+ out[11] = (x27 + x55);
+ out[12] = (x29 + x57);
+ out[13] = (x31 + x59);
+ out[14] = (x30 + x58);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.log b/src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.log
new file mode 100644
index 000000000..08d611628
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
+ ((x30 + x58), (x31 + x59), (x29 + x57), (x27 + x55), (x25 + x53), (x23 + x51), (x21 + x49), (x19 + x47), (x17 + x45), (x15 + x43), (x13 + x41), (x11 + x39), (x9 + x37), (x7 + x35), (x5 + x33)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25_15limbs/femul.c b/src/Specific/solinas32_2e369m25_15limbs/femul.c
new file mode 100644
index 000000000..332b88a70
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/femul.c
@@ -0,0 +1,113 @@
+static void femul(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x58 = in2[14];
+ { const uint32_t x59 = in2[13];
+ { const uint32_t x57 = in2[12];
+ { const uint32_t x55 = in2[11];
+ { const uint32_t x53 = in2[10];
+ { const uint32_t x51 = in2[9];
+ { const uint32_t x49 = in2[8];
+ { const uint32_t x47 = in2[7];
+ { const uint32_t x45 = in2[6];
+ { const uint32_t x43 = in2[5];
+ { const uint32_t x41 = in2[4];
+ { const uint32_t x39 = in2[3];
+ { const uint32_t x37 = in2[2];
+ { const uint32_t x35 = in2[1];
+ { const uint32_t x33 = in2[0];
+ { uint64_t x60 = (((uint64_t)x5 * x58) + (((uint64_t)x7 * x59) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + ((0x2 * ((uint64_t)x29 * x37)) + (((uint64_t)x31 * x35) + ((uint64_t)x30 * x33)))))))))))))));
+ { uint64_t x61 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + (((uint64_t)x11 * x53) + ((0x2 * ((uint64_t)x13 * x51)) + (((uint64_t)x15 * x49) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + ((0x2 * ((uint64_t)x27 * x37)) + ((0x2 * ((uint64_t)x29 * x35)) + ((uint64_t)x31 * x33)))))))))))))) + (0x19 * (0x2 * ((uint64_t)x30 * x58))));
+ { uint64_t x62 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + ((uint64_t)x29 * x33))))))))))))) + (0x19 * (((uint64_t)x31 * x58) + ((uint64_t)x30 * x59))));
+ { uint64_t x63 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + ((0x2 * ((uint64_t)x9 * x51)) + (((uint64_t)x11 * x49) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + (((uint64_t)x25 * x35) + ((uint64_t)x27 * x33)))))))))))) + (0x19 * ((0x2 * ((uint64_t)x29 * x58)) + (((uint64_t)x31 * x59) + (0x2 * ((uint64_t)x30 * x57))))));
+ { uint64_t x64 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + ((uint64_t)x25 * x33))))))))))) + (0x19 * ((0x2 * ((uint64_t)x27 * x58)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + (0x2 * ((uint64_t)x30 * x55)))))));
+ { uint64_t x65 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x23 * x33)))))))))) + (0x19 * (((uint64_t)x25 * x58) + (((uint64_t)x27 * x59) + ((0x2 * ((uint64_t)x29 * x57)) + (((uint64_t)x31 * x55) + ((uint64_t)x30 * x53)))))));
+ { uint64_t x66 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x21 * x33))))))))) + (0x19 * ((0x2 * ((uint64_t)x23 * x58)) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + (((uint64_t)x31 * x53) + (0x2 * ((uint64_t)x30 * x51)))))))));
+ { uint64_t x67 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((uint64_t)x19 * x33)))))))) + (0x19 * (((uint64_t)x21 * x58) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + ((uint64_t)x30 * x49)))))))));
+ { uint64_t x68 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))))))) + (0x19 * ((0x2 * ((uint64_t)x19 * x58)) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((0x2 * ((uint64_t)x29 * x51)) + (((uint64_t)x31 * x49) + (0x2 * ((uint64_t)x30 * x47)))))))))));
+ { uint64_t x69 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((uint64_t)x15 * x33)))))) + (0x19 * ((0x2 * ((uint64_t)x17 * x58)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + (((uint64_t)x25 * x53) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + (0x2 * ((uint64_t)x30 * x45))))))))))));
+ { uint64_t x70 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + ((uint64_t)x13 * x33))))) + (0x19 * (((uint64_t)x15 * x58) + (((uint64_t)x17 * x59) + ((0x2 * ((uint64_t)x19 * x57)) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + ((0x2 * ((uint64_t)x29 * x47)) + (((uint64_t)x31 * x45) + ((uint64_t)x30 * x43))))))))))));
+ { uint64_t x71 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((uint64_t)x11 * x33)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x58)) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + (((uint64_t)x21 * x53) + ((0x2 * ((uint64_t)x23 * x51)) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + (((uint64_t)x31 * x43) + (0x2 * ((uint64_t)x30 * x41))))))))))))));
+ { uint64_t x72 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((uint64_t)x9 * x33))) + (0x19 * (((uint64_t)x11 * x58) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x30 * x39))))))))))))));
+ { uint64_t x73 = ((((uint64_t)x5 * x35) + ((uint64_t)x7 * x33)) + (0x19 * ((0x2 * ((uint64_t)x9 * x58)) + (((uint64_t)x11 * x59) + ((0x2 * ((uint64_t)x13 * x57)) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + ((0x2 * ((uint64_t)x19 * x51)) + (((uint64_t)x21 * x49) + ((0x2 * ((uint64_t)x23 * x47)) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((0x2 * ((uint64_t)x29 * x41)) + (((uint64_t)x31 * x39) + (0x2 * ((uint64_t)x30 * x37))))))))))))))));
+ { uint64_t x74 = (((uint64_t)x5 * x33) + (0x19 * ((0x2 * ((uint64_t)x7 * x58)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + (((uint64_t)x15 * x53) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + (0x2 * ((uint64_t)x30 * x35)))))))))))))))));
+ { uint64_t x75 = (x74 >> 0x19);
+ { uint32_t x76 = ((uint32_t)x74 & 0x1ffffff);
+ { uint64_t x77 = (x75 + x73);
+ { uint64_t x78 = (x77 >> 0x19);
+ { uint32_t x79 = ((uint32_t)x77 & 0x1ffffff);
+ { uint64_t x80 = (x78 + x72);
+ { uint64_t x81 = (x80 >> 0x18);
+ { uint32_t x82 = ((uint32_t)x80 & 0xffffff);
+ { uint64_t x83 = (x81 + x71);
+ { uint64_t x84 = (x83 >> 0x19);
+ { uint32_t x85 = ((uint32_t)x83 & 0x1ffffff);
+ { uint64_t x86 = (x84 + x70);
+ { uint64_t x87 = (x86 >> 0x18);
+ { uint32_t x88 = ((uint32_t)x86 & 0xffffff);
+ { uint64_t x89 = (x87 + x69);
+ { uint64_t x90 = (x89 >> 0x19);
+ { uint32_t x91 = ((uint32_t)x89 & 0x1ffffff);
+ { uint64_t x92 = (x90 + x68);
+ { uint64_t x93 = (x92 >> 0x19);
+ { uint32_t x94 = ((uint32_t)x92 & 0x1ffffff);
+ { uint64_t x95 = (x93 + x67);
+ { uint64_t x96 = (x95 >> 0x18);
+ { uint32_t x97 = ((uint32_t)x95 & 0xffffff);
+ { uint64_t x98 = (x96 + x66);
+ { uint64_t x99 = (x98 >> 0x19);
+ { uint32_t x100 = ((uint32_t)x98 & 0x1ffffff);
+ { uint64_t x101 = (x99 + x65);
+ { uint64_t x102 = (x101 >> 0x18);
+ { uint32_t x103 = ((uint32_t)x101 & 0xffffff);
+ { uint64_t x104 = (x102 + x64);
+ { uint64_t x105 = (x104 >> 0x19);
+ { uint32_t x106 = ((uint32_t)x104 & 0x1ffffff);
+ { uint64_t x107 = (x105 + x63);
+ { uint64_t x108 = (x107 >> 0x19);
+ { uint32_t x109 = ((uint32_t)x107 & 0x1ffffff);
+ { uint64_t x110 = (x108 + x62);
+ { uint64_t x111 = (x110 >> 0x18);
+ { uint32_t x112 = ((uint32_t)x110 & 0xffffff);
+ { uint64_t x113 = (x111 + x61);
+ { uint64_t x114 = (x113 >> 0x19);
+ { uint32_t x115 = ((uint32_t)x113 & 0x1ffffff);
+ { uint64_t x116 = (x114 + x60);
+ { uint64_t x117 = (x116 >> 0x18);
+ { uint32_t x118 = ((uint32_t)x116 & 0xffffff);
+ { uint64_t x119 = (x76 + (0x19 * x117));
+ { uint32_t x120 = (uint32_t) (x119 >> 0x19);
+ { uint32_t x121 = ((uint32_t)x119 & 0x1ffffff);
+ { uint32_t x122 = (x120 + x79);
+ { uint32_t x123 = (x122 >> 0x19);
+ { uint32_t x124 = (x122 & 0x1ffffff);
+ out[0] = x121;
+ out[1] = x124;
+ out[2] = (x123 + x82);
+ out[3] = x85;
+ out[4] = x88;
+ out[5] = x91;
+ out[6] = x94;
+ out[7] = x97;
+ out[8] = x100;
+ out[9] = x103;
+ out[10] = x106;
+ out[11] = x109;
+ out[12] = x112;
+ out[13] = x115;
+ out[14] = x118;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e369m25_15limbs/femulDisplay.log b/src/Specific/solinas32_2e369m25_15limbs/femulDisplay.log
new file mode 100644
index 000000000..6ae70205b
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/femulDisplay.log
@@ -0,0 +1,72 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
+ uint64_t x60 = (((uint64_t)x5 * x58) + (((uint64_t)x7 * x59) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + ((0x2 * ((uint64_t)x29 * x37)) + (((uint64_t)x31 * x35) + ((uint64_t)x30 * x33)))))))))))))));
+ uint64_t x61 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + (((uint64_t)x11 * x53) + ((0x2 * ((uint64_t)x13 * x51)) + (((uint64_t)x15 * x49) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + ((0x2 * ((uint64_t)x27 * x37)) + ((0x2 * ((uint64_t)x29 * x35)) + ((uint64_t)x31 * x33)))))))))))))) + (0x19 * (0x2 * ((uint64_t)x30 * x58))));
+ uint64_t x62 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + ((uint64_t)x29 * x33))))))))))))) + (0x19 * (((uint64_t)x31 * x58) + ((uint64_t)x30 * x59))));
+ uint64_t x63 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + ((0x2 * ((uint64_t)x9 * x51)) + (((uint64_t)x11 * x49) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + (((uint64_t)x25 * x35) + ((uint64_t)x27 * x33)))))))))))) + (0x19 * ((0x2 * ((uint64_t)x29 * x58)) + (((uint64_t)x31 * x59) + (0x2 * ((uint64_t)x30 * x57))))));
+ uint64_t x64 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((0x2 * ((uint64_t)x23 * x35)) + ((uint64_t)x25 * x33))))))))))) + (0x19 * ((0x2 * ((uint64_t)x27 * x58)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + (0x2 * ((uint64_t)x30 * x55)))))));
+ uint64_t x65 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((uint64_t)x23 * x33)))))))))) + (0x19 * (((uint64_t)x25 * x58) + (((uint64_t)x27 * x59) + ((0x2 * ((uint64_t)x29 * x57)) + (((uint64_t)x31 * x55) + ((uint64_t)x30 * x53)))))));
+ uint64_t x66 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x21 * x33))))))))) + (0x19 * ((0x2 * ((uint64_t)x23 * x58)) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + (((uint64_t)x31 * x53) + (0x2 * ((uint64_t)x30 * x51)))))))));
+ uint64_t x67 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((uint64_t)x19 * x33)))))))) + (0x19 * (((uint64_t)x21 * x58) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + ((uint64_t)x30 * x49)))))))));
+ uint64_t x68 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))))))) + (0x19 * ((0x2 * ((uint64_t)x19 * x58)) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((0x2 * ((uint64_t)x29 * x51)) + (((uint64_t)x31 * x49) + (0x2 * ((uint64_t)x30 * x47)))))))))));
+ uint64_t x69 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((uint64_t)x15 * x33)))))) + (0x19 * ((0x2 * ((uint64_t)x17 * x58)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + (((uint64_t)x25 * x53) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + (0x2 * ((uint64_t)x30 * x45))))))))))));
+ uint64_t x70 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + ((uint64_t)x13 * x33))))) + (0x19 * (((uint64_t)x15 * x58) + (((uint64_t)x17 * x59) + ((0x2 * ((uint64_t)x19 * x57)) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + ((0x2 * ((uint64_t)x29 * x47)) + (((uint64_t)x31 * x45) + ((uint64_t)x30 * x43))))))))))));
+ uint64_t x71 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((uint64_t)x11 * x33)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x58)) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + (((uint64_t)x21 * x53) + ((0x2 * ((uint64_t)x23 * x51)) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + (((uint64_t)x31 * x43) + (0x2 * ((uint64_t)x30 * x41))))))))))))));
+ uint64_t x72 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((uint64_t)x9 * x33))) + (0x19 * (((uint64_t)x11 * x58) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x30 * x39))))))))))))));
+ uint64_t x73 = ((((uint64_t)x5 * x35) + ((uint64_t)x7 * x33)) + (0x19 * ((0x2 * ((uint64_t)x9 * x58)) + (((uint64_t)x11 * x59) + ((0x2 * ((uint64_t)x13 * x57)) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + ((0x2 * ((uint64_t)x19 * x51)) + (((uint64_t)x21 * x49) + ((0x2 * ((uint64_t)x23 * x47)) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((0x2 * ((uint64_t)x29 * x41)) + (((uint64_t)x31 * x39) + (0x2 * ((uint64_t)x30 * x37))))))))))))))));
+ uint64_t x74 = (((uint64_t)x5 * x33) + (0x19 * ((0x2 * ((uint64_t)x7 * x58)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + (((uint64_t)x15 * x53) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + (0x2 * ((uint64_t)x30 * x35)))))))))))))))));
+ uint64_t x75 = (x74 >> 0x19);
+ uint32_t x76 = ((uint32_t)x74 & 0x1ffffff);
+ uint64_t x77 = (x75 + x73);
+ uint64_t x78 = (x77 >> 0x19);
+ uint32_t x79 = ((uint32_t)x77 & 0x1ffffff);
+ uint64_t x80 = (x78 + x72);
+ uint64_t x81 = (x80 >> 0x18);
+ uint32_t x82 = ((uint32_t)x80 & 0xffffff);
+ uint64_t x83 = (x81 + x71);
+ uint64_t x84 = (x83 >> 0x19);
+ uint32_t x85 = ((uint32_t)x83 & 0x1ffffff);
+ uint64_t x86 = (x84 + x70);
+ uint64_t x87 = (x86 >> 0x18);
+ uint32_t x88 = ((uint32_t)x86 & 0xffffff);
+ uint64_t x89 = (x87 + x69);
+ uint64_t x90 = (x89 >> 0x19);
+ uint32_t x91 = ((uint32_t)x89 & 0x1ffffff);
+ uint64_t x92 = (x90 + x68);
+ uint64_t x93 = (x92 >> 0x19);
+ uint32_t x94 = ((uint32_t)x92 & 0x1ffffff);
+ uint64_t x95 = (x93 + x67);
+ uint64_t x96 = (x95 >> 0x18);
+ uint32_t x97 = ((uint32_t)x95 & 0xffffff);
+ uint64_t x98 = (x96 + x66);
+ uint64_t x99 = (x98 >> 0x19);
+ uint32_t x100 = ((uint32_t)x98 & 0x1ffffff);
+ uint64_t x101 = (x99 + x65);
+ uint64_t x102 = (x101 >> 0x18);
+ uint32_t x103 = ((uint32_t)x101 & 0xffffff);
+ uint64_t x104 = (x102 + x64);
+ uint64_t x105 = (x104 >> 0x19);
+ uint32_t x106 = ((uint32_t)x104 & 0x1ffffff);
+ uint64_t x107 = (x105 + x63);
+ uint64_t x108 = (x107 >> 0x19);
+ uint32_t x109 = ((uint32_t)x107 & 0x1ffffff);
+ uint64_t x110 = (x108 + x62);
+ uint64_t x111 = (x110 >> 0x18);
+ uint32_t x112 = ((uint32_t)x110 & 0xffffff);
+ uint64_t x113 = (x111 + x61);
+ uint64_t x114 = (x113 >> 0x19);
+ uint32_t x115 = ((uint32_t)x113 & 0x1ffffff);
+ uint64_t x116 = (x114 + x60);
+ uint64_t x117 = (x116 >> 0x18);
+ uint32_t x118 = ((uint32_t)x116 & 0xffffff);
+ uint64_t x119 = (x76 + (0x19 * x117));
+ uint32_t x120 = (uint32_t) (x119 >> 0x19);
+ uint32_t x121 = ((uint32_t)x119 & 0x1ffffff);
+ uint32_t x122 = (x120 + x79);
+ uint32_t x123 = (x122 >> 0x19);
+ uint32_t x124 = (x122 & 0x1ffffff);
+ return (Return x118, Return x115, Return x112, Return x109, Return x106, Return x103, Return x100, Return x97, Return x94, Return x91, Return x88, Return x85, (x123 + x82), Return x124, Return x121))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesquare.c b/src/Specific/solinas32_2e369m25_15limbs/fesquare.c
new file mode 100644
index 000000000..752b22e8e
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesquare.c
@@ -0,0 +1,98 @@
+static void fesquare(uint32_t out[15], const uint32_t in1[15]) {
+ { const uint32_t x27 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x29 = (((uint64_t)x2 * x27) + (((uint64_t)x4 * x28) + ((0x2 * ((uint64_t)x6 * x26)) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + ((0x2 * ((uint64_t)x26 * x6)) + (((uint64_t)x28 * x4) + ((uint64_t)x27 * x2)))))))))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + (((uint64_t)x8 * x22) + ((0x2 * ((uint64_t)x10 * x20)) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + ((0x2 * ((uint64_t)x20 * x10)) + (((uint64_t)x22 * x8) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x19 * (0x2 * ((uint64_t)x27 * x27))));
+ { uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x19 * (((uint64_t)x28 * x27) + ((uint64_t)x27 * x28))));
+ { uint64_t x32 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x19 * ((0x2 * ((uint64_t)x26 * x27)) + (((uint64_t)x28 * x28) + (0x2 * ((uint64_t)x27 * x26))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x19 * ((0x2 * ((uint64_t)x24 * x27)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + (0x2 * ((uint64_t)x27 * x24)))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x19 * (((uint64_t)x22 * x27) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + ((uint64_t)x27 * x22)))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x19 * ((0x2 * ((uint64_t)x20 * x27)) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + (0x2 * ((uint64_t)x27 * x20)))))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x19 * (((uint64_t)x18 * x27) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x27 * x18)))))))));
+ { uint64_t x37 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x19 * ((0x2 * ((uint64_t)x16 * x27)) + (((uint64_t)x18 * x28) + ((0x2 * ((uint64_t)x20 * x26)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((0x2 * ((uint64_t)x26 * x20)) + (((uint64_t)x28 * x18) + (0x2 * ((uint64_t)x27 * x16)))))))))));
+ { uint64_t x38 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * ((0x2 * ((uint64_t)x14 * x27)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + (0x2 * ((uint64_t)x27 * x14))))))))))));
+ { uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x27) + (((uint64_t)x14 * x28) + ((0x2 * ((uint64_t)x16 * x26)) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((0x2 * ((uint64_t)x26 * x16)) + (((uint64_t)x28 * x14) + ((uint64_t)x27 * x12))))))))))));
+ { uint64_t x40 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x27)) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + (0x2 * ((uint64_t)x27 * x10))))))))))))));
+ { uint64_t x41 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x27) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + ((uint64_t)x27 * x8))))))))))))));
+ { uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x27)) + (((uint64_t)x8 * x28) + ((0x2 * ((uint64_t)x10 * x26)) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((0x2 * ((uint64_t)x26 * x10)) + (((uint64_t)x28 * x8) + (0x2 * ((uint64_t)x27 * x6))))))))))))))));
+ { uint64_t x43 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x27)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + (0x2 * ((uint64_t)x27 * x4)))))))))))))))));
+ { uint64_t x44 = (x43 >> 0x19);
+ { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ { uint64_t x46 = (x44 + x42);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x41);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x40);
+ { uint64_t x53 = (x52 >> 0x19);
+ { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ { uint64_t x55 = (x53 + x39);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x56 + x38);
+ { uint64_t x59 = (x58 >> 0x19);
+ { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ { uint64_t x61 = (x59 + x37);
+ { uint64_t x62 = (x61 >> 0x19);
+ { uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ { uint64_t x64 = (x62 + x36);
+ { uint64_t x65 = (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint64_t x67 = (x65 + x35);
+ { uint64_t x68 = (x67 >> 0x19);
+ { uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ { uint64_t x70 = (x68 + x34);
+ { uint64_t x71 = (x70 >> 0x18);
+ { uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ { uint64_t x73 = (x71 + x33);
+ { uint64_t x74 = (x73 >> 0x19);
+ { uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ { uint64_t x76 = (x74 + x32);
+ { uint64_t x77 = (x76 >> 0x19);
+ { uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
+ { uint64_t x79 = (x77 + x31);
+ { uint64_t x80 = (x79 >> 0x18);
+ { uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ { uint64_t x82 = (x80 + x30);
+ { uint64_t x83 = (x82 >> 0x19);
+ { uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ { uint64_t x85 = (x83 + x29);
+ { uint64_t x86 = (x85 >> 0x18);
+ { uint32_t x87 = ((uint32_t)x85 & 0xffffff);
+ { uint64_t x88 = (x45 + (0x19 * x86));
+ { uint32_t x89 = (uint32_t) (x88 >> 0x19);
+ { uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
+ { uint32_t x91 = (x89 + x48);
+ { uint32_t x92 = (x91 >> 0x19);
+ { uint32_t x93 = (x91 & 0x1ffffff);
+ out[0] = x90;
+ out[1] = x93;
+ out[2] = (x92 + x51);
+ out[3] = x54;
+ out[4] = x57;
+ out[5] = x60;
+ out[6] = x63;
+ out[7] = x66;
+ out[8] = x69;
+ out[9] = x72;
+ out[10] = x75;
+ out[11] = x78;
+ out[12] = x81;
+ out[13] = x84;
+ out[14] = x87;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.log b/src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.log
new file mode 100644
index 000000000..27f6a725a
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.log
@@ -0,0 +1,72 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x29 = (((uint64_t)x2 * x27) + (((uint64_t)x4 * x28) + ((0x2 * ((uint64_t)x6 * x26)) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + ((0x2 * ((uint64_t)x26 * x6)) + (((uint64_t)x28 * x4) + ((uint64_t)x27 * x2)))))))))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + (((uint64_t)x8 * x22) + ((0x2 * ((uint64_t)x10 * x20)) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + ((0x2 * ((uint64_t)x20 * x10)) + (((uint64_t)x22 * x8) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x19 * (0x2 * ((uint64_t)x27 * x27))));
+ uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x19 * (((uint64_t)x28 * x27) + ((uint64_t)x27 * x28))));
+ uint64_t x32 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x19 * ((0x2 * ((uint64_t)x26 * x27)) + (((uint64_t)x28 * x28) + (0x2 * ((uint64_t)x27 * x26))))));
+ uint64_t x33 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x19 * ((0x2 * ((uint64_t)x24 * x27)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + (0x2 * ((uint64_t)x27 * x24)))))));
+ uint64_t x34 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x19 * (((uint64_t)x22 * x27) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + ((uint64_t)x27 * x22)))))));
+ uint64_t x35 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x19 * ((0x2 * ((uint64_t)x20 * x27)) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + (0x2 * ((uint64_t)x27 * x20)))))))));
+ uint64_t x36 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x19 * (((uint64_t)x18 * x27) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x27 * x18)))))))));
+ uint64_t x37 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x19 * ((0x2 * ((uint64_t)x16 * x27)) + (((uint64_t)x18 * x28) + ((0x2 * ((uint64_t)x20 * x26)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((0x2 * ((uint64_t)x26 * x20)) + (((uint64_t)x28 * x18) + (0x2 * ((uint64_t)x27 * x16)))))))))));
+ uint64_t x38 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * ((0x2 * ((uint64_t)x14 * x27)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + (0x2 * ((uint64_t)x27 * x14))))))))))));
+ uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x27) + (((uint64_t)x14 * x28) + ((0x2 * ((uint64_t)x16 * x26)) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((0x2 * ((uint64_t)x26 * x16)) + (((uint64_t)x28 * x14) + ((uint64_t)x27 * x12))))))))))));
+ uint64_t x40 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x27)) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + (0x2 * ((uint64_t)x27 * x10))))))))))))));
+ uint64_t x41 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x27) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + ((uint64_t)x27 * x8))))))))))))));
+ uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * ((0x2 * ((uint64_t)x6 * x27)) + (((uint64_t)x8 * x28) + ((0x2 * ((uint64_t)x10 * x26)) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((0x2 * ((uint64_t)x26 * x10)) + (((uint64_t)x28 * x8) + (0x2 * ((uint64_t)x27 * x6))))))))))))))));
+ uint64_t x43 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x27)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + (0x2 * ((uint64_t)x27 * x4)))))))))))))))));
+ uint64_t x44 = (x43 >> 0x19);
+ uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
+ uint64_t x46 = (x44 + x42);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x41);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x40);
+ uint64_t x53 = (x52 >> 0x19);
+ uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
+ uint64_t x55 = (x53 + x39);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x56 + x38);
+ uint64_t x59 = (x58 >> 0x19);
+ uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ uint64_t x61 = (x59 + x37);
+ uint64_t x62 = (x61 >> 0x19);
+ uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ uint64_t x64 = (x62 + x36);
+ uint64_t x65 = (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint64_t x67 = (x65 + x35);
+ uint64_t x68 = (x67 >> 0x19);
+ uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ uint64_t x70 = (x68 + x34);
+ uint64_t x71 = (x70 >> 0x18);
+ uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ uint64_t x73 = (x71 + x33);
+ uint64_t x74 = (x73 >> 0x19);
+ uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ uint64_t x76 = (x74 + x32);
+ uint64_t x77 = (x76 >> 0x19);
+ uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
+ uint64_t x79 = (x77 + x31);
+ uint64_t x80 = (x79 >> 0x18);
+ uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ uint64_t x82 = (x80 + x30);
+ uint64_t x83 = (x82 >> 0x19);
+ uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ uint64_t x85 = (x83 + x29);
+ uint64_t x86 = (x85 >> 0x18);
+ uint32_t x87 = ((uint32_t)x85 & 0xffffff);
+ uint64_t x88 = (x45 + (0x19 * x86));
+ uint32_t x89 = (uint32_t) (x88 >> 0x19);
+ uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
+ uint32_t x91 = (x89 + x48);
+ uint32_t x92 = (x91 >> 0x19);
+ uint32_t x93 = (x91 & 0x1ffffff);
+ return (Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, (x92 + x51), Return x93, Return x90))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesub.c b/src/Specific/solinas32_2e369m25_15limbs/fesub.c
new file mode 100644
index 000000000..3547d3899
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesub.c
@@ -0,0 +1,48 @@
+static void fesub(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x58 = in2[14];
+ { const uint32_t x59 = in2[13];
+ { const uint32_t x57 = in2[12];
+ { const uint32_t x55 = in2[11];
+ { const uint32_t x53 = in2[10];
+ { const uint32_t x51 = in2[9];
+ { const uint32_t x49 = in2[8];
+ { const uint32_t x47 = in2[7];
+ { const uint32_t x45 = in2[6];
+ { const uint32_t x43 = in2[5];
+ { const uint32_t x41 = in2[4];
+ { const uint32_t x39 = in2[3];
+ { const uint32_t x37 = in2[2];
+ { const uint32_t x35 = in2[1];
+ { const uint32_t x33 = in2[0];
+ out[0] = ((Const 67108814 + x5) - x33);
+ out[1] = ((0x3fffffe + x7) - x35);
+ out[2] = ((0x1fffffe + x9) - x37);
+ out[3] = ((0x3fffffe + x11) - x39);
+ out[4] = ((0x1fffffe + x13) - x41);
+ out[5] = ((0x3fffffe + x15) - x43);
+ out[6] = ((0x3fffffe + x17) - x45);
+ out[7] = ((0x1fffffe + x19) - x47);
+ out[8] = ((0x3fffffe + x21) - x49);
+ out[9] = ((0x1fffffe + x23) - x51);
+ out[10] = ((0x3fffffe + x25) - x53);
+ out[11] = ((0x3fffffe + x27) - x55);
+ out[12] = ((0x1fffffe + x29) - x57);
+ out[13] = ((0x3fffffe + x31) - x59);
+ out[14] = ((0x1fffffe + x30) - x58);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.log b/src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.log
new file mode 100644
index 000000000..582c69d82
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
+ (((0x1fffffe + x30) - x58), ((0x3fffffe + x31) - x59), ((0x1fffffe + x29) - x57), ((0x3fffffe + x27) - x55), ((0x3fffffe + x25) - x53), ((0x1fffffe + x23) - x51), ((0x3fffffe + x21) - x49), ((0x1fffffe + x19) - x47), ((0x3fffffe + x17) - x45), ((0x3fffffe + x15) - x43), ((0x1fffffe + x13) - x41), ((0x3fffffe + x11) - x39), ((0x1fffffe + x9) - x37), ((0x3fffffe + x7) - x35), ((Const 67108814 + x5) - x33)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25_15limbs/freeze.c b/src/Specific/solinas32_2e369m25_15limbs/freeze.c
new file mode 100644
index 000000000..b97e44a92
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/freeze.c
@@ -0,0 +1,79 @@
+static void freeze(uint32_t out[15], const uint32_t in1[15]) {
+ { const uint32_t x27 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554407);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x1ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0xffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x1ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0xffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x1ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x1ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0xffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x1ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0xffffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x1ffffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x1ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0xffffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x1ffffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0xffffff);
+ { uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
+ { uint32_t x75 = (x74 & Const 33554407);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
+ { uint32_t x79 = (x74 & 0x1ffffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
+ { uint32_t x83 = (x74 & 0xffffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
+ { uint32_t x87 = (x74 & 0x1ffffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
+ { uint32_t x91 = (x74 & 0xffffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
+ { uint32_t x95 = (x74 & 0x1ffffff);
+ { uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
+ { uint32_t x99 = (x74 & 0x1ffffff);
+ { uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
+ { uint32_t x103 = (x74 & 0xffffff);
+ { uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
+ { uint32_t x107 = (x74 & 0x1ffffff);
+ { uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
+ { uint32_t x111 = (x74 & 0xffffff);
+ { uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
+ { uint32_t x115 = (x74 & 0x1ffffff);
+ { uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
+ { uint32_t x119 = (x74 & 0x1ffffff);
+ { uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
+ { uint32_t x123 = (x74 & 0xffffff);
+ { uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
+ { uint32_t x127 = (x74 & 0x1ffffff);
+ { uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
+ { uint32_t x131 = (x74 & 0xffffff);
+ { uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
+ out[0] = x77;
+ out[1] = x81;
+ out[2] = x85;
+ out[3] = x89;
+ out[4] = x93;
+ out[5] = x97;
+ out[6] = x101;
+ out[7] = x105;
+ out[8] = x109;
+ out[9] = x113;
+ out[10] = x117;
+ out[11] = x121;
+ out[12] = x125;
+ out[13] = x129;
+ out[14] = x133;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.log b/src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.log
new file mode 100644
index 000000000..9d6a77f4e
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.log
@@ -0,0 +1,53 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 33554407);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x1ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0xffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x1ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0xffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x1ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x1ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0xffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x1ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0xffffff);
+ uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x1ffffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x1ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0xffffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x1ffffff);
+ uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0xffffff);
+ uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
+ uint32_t x75 = (x74 & Const 33554407);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
+ uint32_t x79 = (x74 & 0x1ffffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
+ uint32_t x83 = (x74 & 0xffffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
+ uint32_t x87 = (x74 & 0x1ffffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
+ uint32_t x91 = (x74 & 0xffffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
+ uint32_t x95 = (x74 & 0x1ffffff);
+ uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
+ uint32_t x99 = (x74 & 0x1ffffff);
+ uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
+ uint32_t x103 = (x74 & 0xffffff);
+ uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
+ uint32_t x107 = (x74 & 0x1ffffff);
+ uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
+ uint32_t x111 = (x74 & 0xffffff);
+ uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
+ uint32_t x115 = (x74 & 0x1ffffff);
+ uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
+ uint32_t x119 = (x74 & 0x1ffffff);
+ uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
+ uint32_t x123 = (x74 & 0xffffff);
+ uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
+ uint32_t x127 = (x74 & 0x1ffffff);
+ uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
+ uint32_t x131 = (x74 & 0xffffff);
+ uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
+ (Return x133, Return x129, Return x125, Return x121, Return x117, Return x113, Return x109, Return x105, Return x101, Return x97, Return x93, Return x89, Return x85, Return x81, Return x77))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_15limbs/feadd.c b/src/Specific/solinas32_2e379m19_15limbs/feadd.c
new file mode 100644
index 000000000..72a59425b
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/feadd.c
@@ -0,0 +1,48 @@
+static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x58 = in2[14];
+ { const uint32_t x59 = in2[13];
+ { const uint32_t x57 = in2[12];
+ { const uint32_t x55 = in2[11];
+ { const uint32_t x53 = in2[10];
+ { const uint32_t x51 = in2[9];
+ { const uint32_t x49 = in2[8];
+ { const uint32_t x47 = in2[7];
+ { const uint32_t x45 = in2[6];
+ { const uint32_t x43 = in2[5];
+ { const uint32_t x41 = in2[4];
+ { const uint32_t x39 = in2[3];
+ { const uint32_t x37 = in2[2];
+ { const uint32_t x35 = in2[1];
+ { const uint32_t x33 = in2[0];
+ out[0] = (x5 + x33);
+ out[1] = (x7 + x35);
+ out[2] = (x9 + x37);
+ out[3] = (x11 + x39);
+ out[4] = (x13 + x41);
+ out[5] = (x15 + x43);
+ out[6] = (x17 + x45);
+ out[7] = (x19 + x47);
+ out[8] = (x21 + x49);
+ out[9] = (x23 + x51);
+ out[10] = (x25 + x53);
+ out[11] = (x27 + x55);
+ out[12] = (x29 + x57);
+ out[13] = (x31 + x59);
+ out[14] = (x30 + x58);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.log b/src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.log
new file mode 100644
index 000000000..08d611628
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
+ ((x30 + x58), (x31 + x59), (x29 + x57), (x27 + x55), (x25 + x53), (x23 + x51), (x21 + x49), (x19 + x47), (x17 + x45), (x15 + x43), (x13 + x41), (x11 + x39), (x9 + x37), (x7 + x35), (x5 + x33)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesquare.c b/src/Specific/solinas32_2e379m19_15limbs/fesquare.c
new file mode 100644
index 000000000..b53458091
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesquare.c
@@ -0,0 +1,98 @@
+static void fesquare(uint32_t out[15], const uint32_t in1[15]) {
+ { const uint32_t x27 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x29 = (((uint64_t)x2 * x27) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x27 * x2)))))))))))))));
+ { uint64_t x30 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x13 * ((uint64_t)x27 * x27)));
+ { uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x13 * (((uint64_t)x28 * x27) + ((uint64_t)x27 * x28))));
+ { uint64_t x32 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x13 * ((0x2 * ((uint64_t)x26 * x27)) + ((0x2 * ((uint64_t)x28 * x28)) + (0x2 * ((uint64_t)x27 * x26))))));
+ { uint64_t x33 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * (((uint64_t)x24 * x27) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((uint64_t)x27 * x24))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x27) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + ((uint64_t)x27 * x22)))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x13 * (((uint64_t)x20 * x27) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + ((uint64_t)x27 * x20))))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((0x2 * ((uint64_t)x18 * x27)) + ((0x2 * ((uint64_t)x20 * x28)) + ((0x2 * ((uint64_t)x22 * x26)) + (((uint64_t)x24 * x24) + ((0x2 * ((uint64_t)x26 * x22)) + ((0x2 * ((uint64_t)x28 * x20)) + (0x2 * ((uint64_t)x27 * x18))))))))));
+ { uint64_t x37 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x27) + ((0x2 * ((uint64_t)x18 * x28)) + ((0x2 * ((uint64_t)x20 * x26)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((0x2 * ((uint64_t)x26 * x20)) + ((0x2 * ((uint64_t)x28 * x18)) + ((uint64_t)x27 * x16))))))))));
+ { uint64_t x38 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x27) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + ((uint64_t)x27 * x14)))))))))));
+ { uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x27) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + ((uint64_t)x27 * x12))))))))))));
+ { uint64_t x40 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * ((0x2 * ((uint64_t)x10 * x27)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + (0x2 * ((uint64_t)x27 * x10))))))))))))));
+ { uint64_t x41 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x27) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((uint64_t)x27 * x8))))))))))))));
+ { uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x27) + (((uint64_t)x8 * x28) + ((0x2 * ((uint64_t)x10 * x26)) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((0x2 * ((uint64_t)x26 * x10)) + (((uint64_t)x28 * x8) + ((uint64_t)x27 * x6)))))))))))))));
+ { uint64_t x43 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x27)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + (0x2 * ((uint64_t)x27 * x4)))))))))))))))));
+ { uint64_t x44 = (x43 >> 0x1a);
+ { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ { uint64_t x46 = (x44 + x42);
+ { uint64_t x47 = (x46 >> 0x19);
+ { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ { uint64_t x49 = (x47 + x41);
+ { uint64_t x50 = (x49 >> 0x19);
+ { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ { uint64_t x52 = (x50 + x40);
+ { uint64_t x53 = (x52 >> 0x1a);
+ { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ { uint64_t x55 = (x53 + x39);
+ { uint64_t x56 = (x55 >> 0x19);
+ { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ { uint64_t x58 = (x56 + x38);
+ { uint64_t x59 = (x58 >> 0x19);
+ { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ { uint64_t x61 = (x59 + x37);
+ { uint64_t x62 = (x61 >> 0x19);
+ { uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ { uint64_t x64 = (x62 + x36);
+ { uint64_t x65 = (x64 >> 0x1a);
+ { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ { uint64_t x67 = (x65 + x35);
+ { uint64_t x68 = (x67 >> 0x19);
+ { uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ { uint64_t x70 = (x68 + x34);
+ { uint64_t x71 = (x70 >> 0x19);
+ { uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
+ { uint64_t x73 = (x71 + x33);
+ { uint64_t x74 = (x73 >> 0x19);
+ { uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ { uint64_t x76 = (x74 + x32);
+ { uint64_t x77 = (x76 >> 0x1a);
+ { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ { uint64_t x79 = (x77 + x31);
+ { uint64_t x80 = (x79 >> 0x19);
+ { uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
+ { uint64_t x82 = (x80 + x30);
+ { uint64_t x83 = (x82 >> 0x19);
+ { uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ { uint64_t x85 = (x83 + x29);
+ { uint64_t x86 = (x85 >> 0x19);
+ { uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
+ { uint64_t x88 = (x45 + (0x13 * x86));
+ { uint32_t x89 = (uint32_t) (x88 >> 0x1a);
+ { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ { uint32_t x91 = (x89 + x48);
+ { uint32_t x92 = (x91 >> 0x19);
+ { uint32_t x93 = (x91 & 0x1ffffff);
+ out[0] = x90;
+ out[1] = x93;
+ out[2] = (x92 + x51);
+ out[3] = x54;
+ out[4] = x57;
+ out[5] = x60;
+ out[6] = x63;
+ out[7] = x66;
+ out[8] = x69;
+ out[9] = x72;
+ out[10] = x75;
+ out[11] = x78;
+ out[12] = x81;
+ out[13] = x84;
+ out[14] = x87;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.log b/src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.log
new file mode 100644
index 000000000..df3c02c53
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.log
@@ -0,0 +1,72 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x29 = (((uint64_t)x2 * x27) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x27 * x2)))))))))))))));
+ uint64_t x30 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x13 * ((uint64_t)x27 * x27)));
+ uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x13 * (((uint64_t)x28 * x27) + ((uint64_t)x27 * x28))));
+ uint64_t x32 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x13 * ((0x2 * ((uint64_t)x26 * x27)) + ((0x2 * ((uint64_t)x28 * x28)) + (0x2 * ((uint64_t)x27 * x26))))));
+ uint64_t x33 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * (((uint64_t)x24 * x27) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((uint64_t)x27 * x24))))));
+ uint64_t x34 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x27) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + ((uint64_t)x27 * x22)))))));
+ uint64_t x35 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x13 * (((uint64_t)x20 * x27) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + ((uint64_t)x27 * x20))))))));
+ uint64_t x36 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((0x2 * ((uint64_t)x18 * x27)) + ((0x2 * ((uint64_t)x20 * x28)) + ((0x2 * ((uint64_t)x22 * x26)) + (((uint64_t)x24 * x24) + ((0x2 * ((uint64_t)x26 * x22)) + ((0x2 * ((uint64_t)x28 * x20)) + (0x2 * ((uint64_t)x27 * x18))))))))));
+ uint64_t x37 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x27) + ((0x2 * ((uint64_t)x18 * x28)) + ((0x2 * ((uint64_t)x20 * x26)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((0x2 * ((uint64_t)x26 * x20)) + ((0x2 * ((uint64_t)x28 * x18)) + ((uint64_t)x27 * x16))))))))));
+ uint64_t x38 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x27) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + ((uint64_t)x27 * x14)))))))))));
+ uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x27) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + ((uint64_t)x27 * x12))))))))))));
+ uint64_t x40 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * ((0x2 * ((uint64_t)x10 * x27)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + (0x2 * ((uint64_t)x27 * x10))))))))))))));
+ uint64_t x41 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x27) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((uint64_t)x27 * x8))))))))))))));
+ uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x27) + (((uint64_t)x8 * x28) + ((0x2 * ((uint64_t)x10 * x26)) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((0x2 * ((uint64_t)x26 * x10)) + (((uint64_t)x28 * x8) + ((uint64_t)x27 * x6)))))))))))))));
+ uint64_t x43 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x27)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + (0x2 * ((uint64_t)x27 * x4)))))))))))))))));
+ uint64_t x44 = (x43 >> 0x1a);
+ uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
+ uint64_t x46 = (x44 + x42);
+ uint64_t x47 = (x46 >> 0x19);
+ uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
+ uint64_t x49 = (x47 + x41);
+ uint64_t x50 = (x49 >> 0x19);
+ uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
+ uint64_t x52 = (x50 + x40);
+ uint64_t x53 = (x52 >> 0x1a);
+ uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
+ uint64_t x55 = (x53 + x39);
+ uint64_t x56 = (x55 >> 0x19);
+ uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
+ uint64_t x58 = (x56 + x38);
+ uint64_t x59 = (x58 >> 0x19);
+ uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
+ uint64_t x61 = (x59 + x37);
+ uint64_t x62 = (x61 >> 0x19);
+ uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
+ uint64_t x64 = (x62 + x36);
+ uint64_t x65 = (x64 >> 0x1a);
+ uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
+ uint64_t x67 = (x65 + x35);
+ uint64_t x68 = (x67 >> 0x19);
+ uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
+ uint64_t x70 = (x68 + x34);
+ uint64_t x71 = (x70 >> 0x19);
+ uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
+ uint64_t x73 = (x71 + x33);
+ uint64_t x74 = (x73 >> 0x19);
+ uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
+ uint64_t x76 = (x74 + x32);
+ uint64_t x77 = (x76 >> 0x1a);
+ uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
+ uint64_t x79 = (x77 + x31);
+ uint64_t x80 = (x79 >> 0x19);
+ uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
+ uint64_t x82 = (x80 + x30);
+ uint64_t x83 = (x82 >> 0x19);
+ uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
+ uint64_t x85 = (x83 + x29);
+ uint64_t x86 = (x85 >> 0x19);
+ uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
+ uint64_t x88 = (x45 + (0x13 * x86));
+ uint32_t x89 = (uint32_t) (x88 >> 0x1a);
+ uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
+ uint32_t x91 = (x89 + x48);
+ uint32_t x92 = (x91 >> 0x19);
+ uint32_t x93 = (x91 & 0x1ffffff);
+ return (Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, (x92 + x51), Return x93, Return x90))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesub.c b/src/Specific/solinas32_2e379m19_15limbs/fesub.c
new file mode 100644
index 000000000..67e2bb2ba
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesub.c
@@ -0,0 +1,48 @@
+static void fesub(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x58 = in2[14];
+ { const uint32_t x59 = in2[13];
+ { const uint32_t x57 = in2[12];
+ { const uint32_t x55 = in2[11];
+ { const uint32_t x53 = in2[10];
+ { const uint32_t x51 = in2[9];
+ { const uint32_t x49 = in2[8];
+ { const uint32_t x47 = in2[7];
+ { const uint32_t x45 = in2[6];
+ { const uint32_t x43 = in2[5];
+ { const uint32_t x41 = in2[4];
+ { const uint32_t x39 = in2[3];
+ { const uint32_t x37 = in2[2];
+ { const uint32_t x35 = in2[1];
+ { const uint32_t x33 = in2[0];
+ out[0] = ((0x7ffffda + x5) - x33);
+ out[1] = ((0x3fffffe + x7) - x35);
+ out[2] = ((0x3fffffe + x9) - x37);
+ out[3] = ((0x7fffffe + x11) - x39);
+ out[4] = ((0x3fffffe + x13) - x41);
+ out[5] = ((0x3fffffe + x15) - x43);
+ out[6] = ((0x3fffffe + x17) - x45);
+ out[7] = ((0x7fffffe + x19) - x47);
+ out[8] = ((0x3fffffe + x21) - x49);
+ out[9] = ((0x3fffffe + x23) - x51);
+ out[10] = ((0x3fffffe + x25) - x53);
+ out[11] = ((0x7fffffe + x27) - x55);
+ out[12] = ((0x3fffffe + x29) - x57);
+ out[13] = ((0x3fffffe + x31) - x59);
+ out[14] = ((0x3fffffe + x30) - x58);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.log b/src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.log
new file mode 100644
index 000000000..75aad202e
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
+ (((0x3fffffe + x30) - x58), ((0x3fffffe + x31) - x59), ((0x3fffffe + x29) - x57), ((0x7fffffe + x27) - x55), ((0x3fffffe + x25) - x53), ((0x3fffffe + x23) - x51), ((0x3fffffe + x21) - x49), ((0x7fffffe + x19) - x47), ((0x3fffffe + x17) - x45), ((0x3fffffe + x15) - x43), ((0x3fffffe + x13) - x41), ((0x7fffffe + x11) - x39), ((0x3fffffe + x9) - x37), ((0x3fffffe + x7) - x35), ((0x7ffffda + x5) - x33)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_15limbs/freeze.c b/src/Specific/solinas32_2e379m19_15limbs/freeze.c
new file mode 100644
index 000000000..00f912634
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/freeze.c
@@ -0,0 +1,79 @@
+static void freeze(uint32_t out[15], const uint32_t in1[15]) {
+ { const uint32_t x27 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffed);
+ { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x1ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x1ffffff);
+ { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x3ffffff);
+ { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x1ffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x1ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x1ffffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x3ffffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x1ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x1ffffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x1ffffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x3ffffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x1ffffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x1ffffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x1ffffff);
+ { uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
+ { uint32_t x75 = (x74 & 0x3ffffed);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
+ { uint32_t x79 = (x74 & 0x1ffffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
+ { uint32_t x83 = (x74 & 0x1ffffff);
+ { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
+ { uint32_t x87 = (x74 & 0x3ffffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
+ { uint32_t x91 = (x74 & 0x1ffffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
+ { uint32_t x95 = (x74 & 0x1ffffff);
+ { uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
+ { uint32_t x99 = (x74 & 0x1ffffff);
+ { uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
+ { uint32_t x103 = (x74 & 0x3ffffff);
+ { uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
+ { uint32_t x107 = (x74 & 0x1ffffff);
+ { uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
+ { uint32_t x111 = (x74 & 0x1ffffff);
+ { uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
+ { uint32_t x115 = (x74 & 0x1ffffff);
+ { uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
+ { uint32_t x119 = (x74 & 0x3ffffff);
+ { uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
+ { uint32_t x123 = (x74 & 0x1ffffff);
+ { uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
+ { uint32_t x127 = (x74 & 0x1ffffff);
+ { uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
+ { uint32_t x131 = (x74 & 0x1ffffff);
+ { uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
+ out[0] = x77;
+ out[1] = x81;
+ out[2] = x85;
+ out[3] = x89;
+ out[4] = x93;
+ out[5] = x97;
+ out[6] = x101;
+ out[7] = x105;
+ out[8] = x109;
+ out[9] = x113;
+ out[10] = x117;
+ out[11] = x121;
+ out[12] = x125;
+ out[13] = x129;
+ out[14] = x133;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.log b/src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.log
new file mode 100644
index 000000000..4d9db2670
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.log
@@ -0,0 +1,53 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffed);
+ uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x1ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x1ffffff);
+ uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x3ffffff);
+ uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x1ffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x1ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x1ffffff);
+ uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x3ffffff);
+ uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x1ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x1ffffff);
+ uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x1ffffff);
+ uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x3ffffff);
+ uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x1ffffff);
+ uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x1ffffff);
+ uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x1ffffff);
+ uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
+ uint32_t x75 = (x74 & 0x3ffffed);
+ uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
+ uint32_t x79 = (x74 & 0x1ffffff);
+ uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
+ uint32_t x83 = (x74 & 0x1ffffff);
+ uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
+ uint32_t x87 = (x74 & 0x3ffffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
+ uint32_t x91 = (x74 & 0x1ffffff);
+ uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
+ uint32_t x95 = (x74 & 0x1ffffff);
+ uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
+ uint32_t x99 = (x74 & 0x1ffffff);
+ uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
+ uint32_t x103 = (x74 & 0x3ffffff);
+ uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
+ uint32_t x107 = (x74 & 0x1ffffff);
+ uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
+ uint32_t x111 = (x74 & 0x1ffffff);
+ uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
+ uint32_t x115 = (x74 & 0x1ffffff);
+ uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
+ uint32_t x119 = (x74 & 0x3ffffff);
+ uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
+ uint32_t x123 = (x74 & 0x1ffffff);
+ uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
+ uint32_t x127 = (x74 & 0x1ffffff);
+ uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
+ uint32_t x131 = (x74 & 0x1ffffff);
+ uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
+ (Return x133, Return x129, Return x125, Return x121, Return x117, Return x113, Return x109, Return x105, Return x101, Return x97, Return x93, Return x89, Return x85, Return x81, Return x77))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_16limbs/feadd.c b/src/Specific/solinas32_2e379m19_16limbs/feadd.c
new file mode 100644
index 000000000..18b150e21
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/feadd.c
@@ -0,0 +1,51 @@
+static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
+ { const uint32_t x32 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x62 = in2[15];
+ { const uint32_t x63 = in2[14];
+ { const uint32_t x61 = in2[13];
+ { const uint32_t x59 = in2[12];
+ { const uint32_t x57 = in2[11];
+ { const uint32_t x55 = in2[10];
+ { const uint32_t x53 = in2[9];
+ { const uint32_t x51 = in2[8];
+ { const uint32_t x49 = in2[7];
+ { const uint32_t x47 = in2[6];
+ { const uint32_t x45 = in2[5];
+ { const uint32_t x43 = in2[4];
+ { const uint32_t x41 = in2[3];
+ { const uint32_t x39 = in2[2];
+ { const uint32_t x37 = in2[1];
+ { const uint32_t x35 = in2[0];
+ out[0] = (x5 + x35);
+ out[1] = (x7 + x37);
+ out[2] = (x9 + x39);
+ out[3] = (x11 + x41);
+ out[4] = (x13 + x43);
+ out[5] = (x15 + x45);
+ out[6] = (x17 + x47);
+ out[7] = (x19 + x49);
+ out[8] = (x21 + x51);
+ out[9] = (x23 + x53);
+ out[10] = (x25 + x55);
+ out[11] = (x27 + x57);
+ out[12] = (x29 + x59);
+ out[13] = (x31 + x61);
+ out[14] = (x33 + x63);
+ out[15] = (x32 + x62);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.log b/src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.log
new file mode 100644
index 000000000..130c31964
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
+ ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesquare.c b/src/Specific/solinas32_2e379m19_16limbs/fesquare.c
new file mode 100644
index 000000000..79e93765f
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesquare.c
@@ -0,0 +1,104 @@
+static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
+ { const uint32_t x29 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x31 = (((uint64_t)x2 * x29) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + ((0x2 * ((uint64_t)x8 * x26)) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + ((0x2 * ((uint64_t)x26 * x8)) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x29 * x2))))))))))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x13 * (0x2 * ((uint64_t)x29 * x29))));
+ { uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x13 * ((0x2 * ((uint64_t)x30 * x29)) + (0x2 * ((uint64_t)x29 * x30)))));
+ { uint64_t x34 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x13 * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
+ { uint64_t x35 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x13 * ((0x2 * ((uint64_t)x26 * x29)) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (0x2 * ((uint64_t)x29 * x26)))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * ((0x2 * ((uint64_t)x24 * x29)) + ((0x2 * ((uint64_t)x26 * x30)) + (((uint64_t)x28 * x28) + ((0x2 * ((uint64_t)x30 * x26)) + (0x2 * ((uint64_t)x29 * x24))))))));
+ { uint64_t x37 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
+ { uint64_t x38 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((0x2 * ((uint64_t)x20 * x29)) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (0x2 * ((uint64_t)x29 * x20))))))))));
+ { uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((0x2 * ((uint64_t)x18 * x29)) + ((0x2 * ((uint64_t)x20 * x30)) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + ((0x2 * ((uint64_t)x30 * x20)) + (0x2 * ((uint64_t)x29 * x18)))))))))));
+ { uint64_t x40 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
+ { uint64_t x41 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x29)) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + ((0x2 * ((uint64_t)x20 * x26)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((0x2 * ((uint64_t)x26 * x20)) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (0x2 * ((uint64_t)x29 * x14)))))))))))));
+ { uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x29)) + ((0x2 * ((uint64_t)x14 * x30)) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + ((0x2 * ((uint64_t)x30 * x14)) + (0x2 * ((uint64_t)x29 * x12))))))))))))));
+ { uint64_t x43 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
+ { uint64_t x44 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x29)) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (0x2 * ((uint64_t)x29 * x8))))))))))))))));
+ { uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * ((0x2 * ((uint64_t)x6 * x29)) + ((0x2 * ((uint64_t)x8 * x30)) + (((uint64_t)x10 * x28) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + (((uint64_t)x28 * x10) + ((0x2 * ((uint64_t)x30 * x8)) + (0x2 * ((uint64_t)x29 * x6)))))))))))))))));
+ { uint64_t x46 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x45);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x44);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x43);
+ { uint64_t x56 = (x55 >> 0x17);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ { uint64_t x58 = (x56 + x42);
+ { uint64_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ { uint64_t x61 = (x59 + x41);
+ { uint64_t x62 = (x61 >> 0x18);
+ { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ { uint64_t x64 = (x62 + x40);
+ { uint64_t x65 = (x64 >> 0x17);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ { uint64_t x67 = (x65 + x39);
+ { uint64_t x68 = (x67 >> 0x18);
+ { uint32_t x69 = ((uint32_t)x67 & 0xffffff);
+ { uint64_t x70 = (x68 + x38);
+ { uint64_t x71 = (x70 >> 0x18);
+ { uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ { uint64_t x73 = (x71 + x37);
+ { uint64_t x74 = (x73 >> 0x17);
+ { uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
+ { uint64_t x76 = (x74 + x36);
+ { uint64_t x77 = (x76 >> 0x18);
+ { uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ { uint64_t x79 = (x77 + x35);
+ { uint64_t x80 = (x79 >> 0x18);
+ { uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ { uint64_t x82 = (x80 + x34);
+ { uint64_t x83 = (x82 >> 0x17);
+ { uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
+ { uint64_t x85 = (x83 + x33);
+ { uint64_t x86 = (x85 >> 0x18);
+ { uint32_t x87 = ((uint32_t)x85 & 0xffffff);
+ { uint64_t x88 = (x86 + x32);
+ { uint64_t x89 = (x88 >> 0x18);
+ { uint32_t x90 = ((uint32_t)x88 & 0xffffff);
+ { uint64_t x91 = (x89 + x31);
+ { uint64_t x92 = (x91 >> 0x17);
+ { uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
+ { uint64_t x94 = (x48 + (0x13 * x92));
+ { uint32_t x95 = (uint32_t) (x94 >> 0x18);
+ { uint32_t x96 = ((uint32_t)x94 & 0xffffff);
+ { uint32_t x97 = (x95 + x51);
+ { uint32_t x98 = (x97 >> 0x18);
+ { uint32_t x99 = (x97 & 0xffffff);
+ out[0] = x96;
+ out[1] = x99;
+ out[2] = (x98 + x54);
+ out[3] = x57;
+ out[4] = x60;
+ out[5] = x63;
+ out[6] = x66;
+ out[7] = x69;
+ out[8] = x72;
+ out[9] = x75;
+ out[10] = x78;
+ out[11] = x81;
+ out[12] = x84;
+ out[13] = x87;
+ out[14] = x90;
+ out[15] = x93;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.log b/src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.log
new file mode 100644
index 000000000..d7c1cd9c5
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.log
@@ -0,0 +1,76 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x31 = (((uint64_t)x2 * x29) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + ((0x2 * ((uint64_t)x8 * x26)) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + ((0x2 * ((uint64_t)x26 * x8)) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x29 * x2))))))))))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x13 * (0x2 * ((uint64_t)x29 * x29))));
+ uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x13 * ((0x2 * ((uint64_t)x30 * x29)) + (0x2 * ((uint64_t)x29 * x30)))));
+ uint64_t x34 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x13 * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
+ uint64_t x35 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x13 * ((0x2 * ((uint64_t)x26 * x29)) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (0x2 * ((uint64_t)x29 * x26)))))));
+ uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * ((0x2 * ((uint64_t)x24 * x29)) + ((0x2 * ((uint64_t)x26 * x30)) + (((uint64_t)x28 * x28) + ((0x2 * ((uint64_t)x30 * x26)) + (0x2 * ((uint64_t)x29 * x24))))))));
+ uint64_t x37 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
+ uint64_t x38 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((0x2 * ((uint64_t)x20 * x29)) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (0x2 * ((uint64_t)x29 * x20))))))))));
+ uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((0x2 * ((uint64_t)x18 * x29)) + ((0x2 * ((uint64_t)x20 * x30)) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + ((0x2 * ((uint64_t)x30 * x20)) + (0x2 * ((uint64_t)x29 * x18)))))))))));
+ uint64_t x40 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
+ uint64_t x41 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * ((0x2 * ((uint64_t)x14 * x29)) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + ((0x2 * ((uint64_t)x20 * x26)) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((0x2 * ((uint64_t)x26 * x20)) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (0x2 * ((uint64_t)x29 * x14)))))))))))));
+ uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x29)) + ((0x2 * ((uint64_t)x14 * x30)) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + ((0x2 * ((uint64_t)x30 * x14)) + (0x2 * ((uint64_t)x29 * x12))))))))))))));
+ uint64_t x43 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
+ uint64_t x44 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x29)) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (0x2 * ((uint64_t)x29 * x8))))))))))))))));
+ uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * ((0x2 * ((uint64_t)x6 * x29)) + ((0x2 * ((uint64_t)x8 * x30)) + (((uint64_t)x10 * x28) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + (((uint64_t)x28 * x10) + ((0x2 * ((uint64_t)x30 * x8)) + (0x2 * ((uint64_t)x29 * x6)))))))))))))))));
+ uint64_t x46 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x45);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x44);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x43);
+ uint64_t x56 = (x55 >> 0x17);
+ uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
+ uint64_t x58 = (x56 + x42);
+ uint64_t x59 = (x58 >> 0x18);
+ uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ uint64_t x61 = (x59 + x41);
+ uint64_t x62 = (x61 >> 0x18);
+ uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ uint64_t x64 = (x62 + x40);
+ uint64_t x65 = (x64 >> 0x17);
+ uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ uint64_t x67 = (x65 + x39);
+ uint64_t x68 = (x67 >> 0x18);
+ uint32_t x69 = ((uint32_t)x67 & 0xffffff);
+ uint64_t x70 = (x68 + x38);
+ uint64_t x71 = (x70 >> 0x18);
+ uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ uint64_t x73 = (x71 + x37);
+ uint64_t x74 = (x73 >> 0x17);
+ uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
+ uint64_t x76 = (x74 + x36);
+ uint64_t x77 = (x76 >> 0x18);
+ uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ uint64_t x79 = (x77 + x35);
+ uint64_t x80 = (x79 >> 0x18);
+ uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ uint64_t x82 = (x80 + x34);
+ uint64_t x83 = (x82 >> 0x17);
+ uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
+ uint64_t x85 = (x83 + x33);
+ uint64_t x86 = (x85 >> 0x18);
+ uint32_t x87 = ((uint32_t)x85 & 0xffffff);
+ uint64_t x88 = (x86 + x32);
+ uint64_t x89 = (x88 >> 0x18);
+ uint32_t x90 = ((uint32_t)x88 & 0xffffff);
+ uint64_t x91 = (x89 + x31);
+ uint64_t x92 = (x91 >> 0x17);
+ uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
+ uint64_t x94 = (x48 + (0x13 * x92));
+ uint32_t x95 = (uint32_t) (x94 >> 0x18);
+ uint32_t x96 = ((uint32_t)x94 & 0xffffff);
+ uint32_t x97 = (x95 + x51);
+ uint32_t x98 = (x97 >> 0x18);
+ uint32_t x99 = (x97 & 0xffffff);
+ return (Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, (x98 + x54), Return x99, Return x96))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesub.c b/src/Specific/solinas32_2e379m19_16limbs/fesub.c
new file mode 100644
index 000000000..49b5ae00e
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesub.c
@@ -0,0 +1,51 @@
+static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
+ { const uint32_t x32 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x62 = in2[15];
+ { const uint32_t x63 = in2[14];
+ { const uint32_t x61 = in2[13];
+ { const uint32_t x59 = in2[12];
+ { const uint32_t x57 = in2[11];
+ { const uint32_t x55 = in2[10];
+ { const uint32_t x53 = in2[9];
+ { const uint32_t x51 = in2[8];
+ { const uint32_t x49 = in2[7];
+ { const uint32_t x47 = in2[6];
+ { const uint32_t x45 = in2[5];
+ { const uint32_t x43 = in2[4];
+ { const uint32_t x41 = in2[3];
+ { const uint32_t x39 = in2[2];
+ { const uint32_t x37 = in2[1];
+ { const uint32_t x35 = in2[0];
+ out[0] = ((Const 33554394 + x5) - x35);
+ out[1] = ((0x1fffffe + x7) - x37);
+ out[2] = ((0x1fffffe + x9) - x39);
+ out[3] = ((0xfffffe + x11) - x41);
+ out[4] = ((0x1fffffe + x13) - x43);
+ out[5] = ((0x1fffffe + x15) - x45);
+ out[6] = ((0xfffffe + x17) - x47);
+ out[7] = ((0x1fffffe + x19) - x49);
+ out[8] = ((0x1fffffe + x21) - x51);
+ out[9] = ((0xfffffe + x23) - x53);
+ out[10] = ((0x1fffffe + x25) - x55);
+ out[11] = ((0x1fffffe + x27) - x57);
+ out[12] = ((0xfffffe + x29) - x59);
+ out[13] = ((0x1fffffe + x31) - x61);
+ out[14] = ((0x1fffffe + x33) - x63);
+ out[15] = ((0xfffffe + x32) - x62);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.log b/src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.log
new file mode 100644
index 000000000..da623587f
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
+ (((0xfffffe + x32) - x62), ((0x1fffffe + x33) - x63), ((0x1fffffe + x31) - x61), ((0xfffffe + x29) - x59), ((0x1fffffe + x27) - x57), ((0x1fffffe + x25) - x55), ((0xfffffe + x23) - x53), ((0x1fffffe + x21) - x51), ((0x1fffffe + x19) - x49), ((0xfffffe + x17) - x47), ((0x1fffffe + x15) - x45), ((0x1fffffe + x13) - x43), ((0xfffffe + x11) - x41), ((0x1fffffe + x9) - x39), ((0x1fffffe + x7) - x37), ((Const 33554394 + x5) - x35)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19_16limbs/freeze.c b/src/Specific/solinas32_2e379m19_16limbs/freeze.c
new file mode 100644
index 000000000..77cd8ef08
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/freeze.c
@@ -0,0 +1,84 @@
+static void freeze(uint32_t out[16], const uint32_t in1[16]) {
+ { const uint32_t x29 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777197);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x7fffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x7fffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x7fffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x7fffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
+ { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
+ { uint32_t x80 = (x79 & Const 16777197);
+ { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
+ { uint32_t x84 = (x79 & 0xffffff);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
+ { uint32_t x88 = (x79 & 0xffffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
+ { uint32_t x92 = (x79 & 0x7fffff);
+ { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
+ { uint32_t x96 = (x79 & 0xffffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
+ { uint32_t x100 = (x79 & 0xffffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
+ { uint32_t x104 = (x79 & 0x7fffff);
+ { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
+ { uint32_t x108 = (x79 & 0xffffff);
+ { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
+ { uint32_t x112 = (x79 & 0xffffff);
+ { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
+ { uint32_t x116 = (x79 & 0x7fffff);
+ { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
+ { uint32_t x120 = (x79 & 0xffffff);
+ { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
+ { uint32_t x124 = (x79 & 0xffffff);
+ { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
+ { uint32_t x128 = (x79 & 0x7fffff);
+ { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
+ { uint32_t x132 = (x79 & 0xffffff);
+ { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
+ { uint32_t x136 = (x79 & 0xffffff);
+ { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
+ { uint32_t x140 = (x79 & 0x7fffff);
+ { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
+ out[0] = x82;
+ out[1] = x86;
+ out[2] = x90;
+ out[3] = x94;
+ out[4] = x98;
+ out[5] = x102;
+ out[6] = x106;
+ out[7] = x110;
+ out[8] = x114;
+ out[9] = x118;
+ out[10] = x122;
+ out[11] = x126;
+ out[12] = x130;
+ out[13] = x134;
+ out[14] = x138;
+ out[15] = x142;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.log b/src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.log
new file mode 100644
index 000000000..3b8a75b91
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777197);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x7fffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x7fffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x7fffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x7fffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
+ uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
+ uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
+ uint32_t x80 = (x79 & Const 16777197);
+ uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
+ uint32_t x84 = (x79 & 0xffffff);
+ uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
+ uint32_t x88 = (x79 & 0xffffff);
+ uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
+ uint32_t x92 = (x79 & 0x7fffff);
+ uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
+ uint32_t x96 = (x79 & 0xffffff);
+ uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
+ uint32_t x100 = (x79 & 0xffffff);
+ uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
+ uint32_t x104 = (x79 & 0x7fffff);
+ uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
+ uint32_t x108 = (x79 & 0xffffff);
+ uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
+ uint32_t x112 = (x79 & 0xffffff);
+ uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
+ uint32_t x116 = (x79 & 0x7fffff);
+ uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
+ uint32_t x120 = (x79 & 0xffffff);
+ uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
+ uint32_t x124 = (x79 & 0xffffff);
+ uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
+ uint32_t x128 = (x79 & 0x7fffff);
+ uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
+ uint32_t x132 = (x79 & 0xffffff);
+ uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
+ uint32_t x136 = (x79 & 0xffffff);
+ uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
+ uint32_t x140 = (x79 & 0x7fffff);
+ uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
+ (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105_16limbs/feadd.c b/src/Specific/solinas32_2e382m105_16limbs/feadd.c
new file mode 100644
index 000000000..18b150e21
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/feadd.c
@@ -0,0 +1,51 @@
+static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
+ { const uint32_t x32 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x62 = in2[15];
+ { const uint32_t x63 = in2[14];
+ { const uint32_t x61 = in2[13];
+ { const uint32_t x59 = in2[12];
+ { const uint32_t x57 = in2[11];
+ { const uint32_t x55 = in2[10];
+ { const uint32_t x53 = in2[9];
+ { const uint32_t x51 = in2[8];
+ { const uint32_t x49 = in2[7];
+ { const uint32_t x47 = in2[6];
+ { const uint32_t x45 = in2[5];
+ { const uint32_t x43 = in2[4];
+ { const uint32_t x41 = in2[3];
+ { const uint32_t x39 = in2[2];
+ { const uint32_t x37 = in2[1];
+ { const uint32_t x35 = in2[0];
+ out[0] = (x5 + x35);
+ out[1] = (x7 + x37);
+ out[2] = (x9 + x39);
+ out[3] = (x11 + x41);
+ out[4] = (x13 + x43);
+ out[5] = (x15 + x45);
+ out[6] = (x17 + x47);
+ out[7] = (x19 + x49);
+ out[8] = (x21 + x51);
+ out[9] = (x23 + x53);
+ out[10] = (x25 + x55);
+ out[11] = (x27 + x57);
+ out[12] = (x29 + x59);
+ out[13] = (x31 + x61);
+ out[14] = (x33 + x63);
+ out[15] = (x32 + x62);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.log b/src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.log
new file mode 100644
index 000000000..130c31964
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
+ ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesquare.c b/src/Specific/solinas32_2e382m105_16limbs/fesquare.c
new file mode 100644
index 000000000..72d6e752d
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesquare.c
@@ -0,0 +1,104 @@
+static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
+ { const uint32_t x29 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x31 = (((uint64_t)x2 * x29) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x29 * x2))))))))))))))));
+ { uint64_t x32 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x69 * (0x2 * ((uint64_t)x29 * x29))));
+ { uint64_t x33 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x69 * ((0x2 * ((uint64_t)x30 * x29)) + (0x2 * ((uint64_t)x29 * x30)))));
+ { uint64_t x34 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x69 * ((0x2 * ((uint64_t)x28 * x29)) + ((0x2 * ((uint64_t)x30 * x30)) + (0x2 * ((uint64_t)x29 * x28))))));
+ { uint64_t x35 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x69 * ((0x2 * ((uint64_t)x26 * x29)) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (0x2 * ((uint64_t)x29 * x26)))))));
+ { uint64_t x36 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x69 * ((0x2 * ((uint64_t)x24 * x29)) + ((0x2 * ((uint64_t)x26 * x30)) + ((0x2 * ((uint64_t)x28 * x28)) + ((0x2 * ((uint64_t)x30 * x26)) + (0x2 * ((uint64_t)x29 * x24))))))));
+ { uint64_t x37 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x69 * ((0x2 * ((uint64_t)x22 * x29)) + ((0x2 * ((uint64_t)x24 * x30)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((0x2 * ((uint64_t)x30 * x24)) + (0x2 * ((uint64_t)x29 * x22)))))))));
+ { uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x69 * ((0x2 * ((uint64_t)x20 * x29)) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + ((0x2 * ((uint64_t)x26 * x26)) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (0x2 * ((uint64_t)x29 * x20))))))))));
+ { uint64_t x39 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x69 * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
+ { uint64_t x40 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x69 * ((0x2 * ((uint64_t)x16 * x29)) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (0x2 * ((uint64_t)x29 * x16))))))))))));
+ { uint64_t x41 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x69 * ((0x2 * ((uint64_t)x14 * x29)) + ((0x2 * ((uint64_t)x16 * x30)) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + ((0x2 * ((uint64_t)x30 * x16)) + (0x2 * ((uint64_t)x29 * x14)))))))))))));
+ { uint64_t x42 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x69 * ((0x2 * ((uint64_t)x12 * x29)) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + (0x2 * ((uint64_t)x29 * x12))))))))))))));
+ { uint64_t x43 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x69 * ((0x2 * ((uint64_t)x10 * x29)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + (0x2 * ((uint64_t)x29 * x10)))))))))))))));
+ { uint64_t x44 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x69 * ((0x2 * ((uint64_t)x8 * x29)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (0x2 * ((uint64_t)x29 * x8))))))))))))))));
+ { uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x69 * ((0x2 * ((uint64_t)x6 * x29)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + (0x2 * ((uint64_t)x29 * x6)))))))))))))))));
+ { uint64_t x46 = (((uint64_t)x2 * x2) + (0x69 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
+ { uint64_t x47 = (x46 >> 0x18);
+ { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ { uint64_t x49 = (x47 + x45);
+ { uint64_t x50 = (x49 >> 0x18);
+ { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ { uint64_t x52 = (x50 + x44);
+ { uint64_t x53 = (x52 >> 0x18);
+ { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ { uint64_t x55 = (x53 + x43);
+ { uint64_t x56 = (x55 >> 0x18);
+ { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ { uint64_t x58 = (x56 + x42);
+ { uint64_t x59 = (x58 >> 0x18);
+ { uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ { uint64_t x61 = (x59 + x41);
+ { uint64_t x62 = (x61 >> 0x18);
+ { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ { uint64_t x64 = (x62 + x40);
+ { uint64_t x65 = (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint64_t x67 = (x65 + x39);
+ { uint64_t x68 = (x67 >> 0x17);
+ { uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ { uint64_t x70 = (x68 + x38);
+ { uint64_t x71 = (x70 >> 0x18);
+ { uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ { uint64_t x73 = (x71 + x37);
+ { uint64_t x74 = (x73 >> 0x18);
+ { uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ { uint64_t x76 = (x74 + x36);
+ { uint64_t x77 = (x76 >> 0x18);
+ { uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ { uint64_t x79 = (x77 + x35);
+ { uint64_t x80 = (x79 >> 0x18);
+ { uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ { uint64_t x82 = (x80 + x34);
+ { uint64_t x83 = (x82 >> 0x18);
+ { uint32_t x84 = ((uint32_t)x82 & 0xffffff);
+ { uint64_t x85 = (x83 + x33);
+ { uint64_t x86 = (x85 >> 0x18);
+ { uint32_t x87 = ((uint32_t)x85 & 0xffffff);
+ { uint64_t x88 = (x86 + x32);
+ { uint64_t x89 = (x88 >> 0x18);
+ { uint32_t x90 = ((uint32_t)x88 & 0xffffff);
+ { uint64_t x91 = (x89 + x31);
+ { uint64_t x92 = (x91 >> 0x17);
+ { uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
+ { uint64_t x94 = (x48 + (0x69 * x92));
+ { uint32_t x95 = (uint32_t) (x94 >> 0x18);
+ { uint32_t x96 = ((uint32_t)x94 & 0xffffff);
+ { uint32_t x97 = (x95 + x51);
+ { uint32_t x98 = (x97 >> 0x18);
+ { uint32_t x99 = (x97 & 0xffffff);
+ out[0] = x96;
+ out[1] = x99;
+ out[2] = (x98 + x54);
+ out[3] = x57;
+ out[4] = x60;
+ out[5] = x63;
+ out[6] = x66;
+ out[7] = x69;
+ out[8] = x72;
+ out[9] = x75;
+ out[10] = x78;
+ out[11] = x81;
+ out[12] = x84;
+ out[13] = x87;
+ out[14] = x90;
+ out[15] = x93;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.log b/src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.log
new file mode 100644
index 000000000..3adbf3fab
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.log
@@ -0,0 +1,76 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x31 = (((uint64_t)x2 * x29) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x29 * x2))))))))))))))));
+ uint64_t x32 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x69 * (0x2 * ((uint64_t)x29 * x29))));
+ uint64_t x33 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x69 * ((0x2 * ((uint64_t)x30 * x29)) + (0x2 * ((uint64_t)x29 * x30)))));
+ uint64_t x34 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x69 * ((0x2 * ((uint64_t)x28 * x29)) + ((0x2 * ((uint64_t)x30 * x30)) + (0x2 * ((uint64_t)x29 * x28))))));
+ uint64_t x35 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x69 * ((0x2 * ((uint64_t)x26 * x29)) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (0x2 * ((uint64_t)x29 * x26)))))));
+ uint64_t x36 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x69 * ((0x2 * ((uint64_t)x24 * x29)) + ((0x2 * ((uint64_t)x26 * x30)) + ((0x2 * ((uint64_t)x28 * x28)) + ((0x2 * ((uint64_t)x30 * x26)) + (0x2 * ((uint64_t)x29 * x24))))))));
+ uint64_t x37 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x69 * ((0x2 * ((uint64_t)x22 * x29)) + ((0x2 * ((uint64_t)x24 * x30)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((0x2 * ((uint64_t)x30 * x24)) + (0x2 * ((uint64_t)x29 * x22)))))))));
+ uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x69 * ((0x2 * ((uint64_t)x20 * x29)) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + ((0x2 * ((uint64_t)x26 * x26)) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (0x2 * ((uint64_t)x29 * x20))))))))));
+ uint64_t x39 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x69 * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
+ uint64_t x40 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x69 * ((0x2 * ((uint64_t)x16 * x29)) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (0x2 * ((uint64_t)x29 * x16))))))))))));
+ uint64_t x41 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x69 * ((0x2 * ((uint64_t)x14 * x29)) + ((0x2 * ((uint64_t)x16 * x30)) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + ((0x2 * ((uint64_t)x30 * x16)) + (0x2 * ((uint64_t)x29 * x14)))))))))))));
+ uint64_t x42 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x69 * ((0x2 * ((uint64_t)x12 * x29)) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + (0x2 * ((uint64_t)x29 * x12))))))))))))));
+ uint64_t x43 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x69 * ((0x2 * ((uint64_t)x10 * x29)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + (0x2 * ((uint64_t)x29 * x10)))))))))))))));
+ uint64_t x44 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x69 * ((0x2 * ((uint64_t)x8 * x29)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (0x2 * ((uint64_t)x29 * x8))))))))))))))));
+ uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x69 * ((0x2 * ((uint64_t)x6 * x29)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + (0x2 * ((uint64_t)x29 * x6)))))))))))))))));
+ uint64_t x46 = (((uint64_t)x2 * x2) + (0x69 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
+ uint64_t x47 = (x46 >> 0x18);
+ uint32_t x48 = ((uint32_t)x46 & 0xffffff);
+ uint64_t x49 = (x47 + x45);
+ uint64_t x50 = (x49 >> 0x18);
+ uint32_t x51 = ((uint32_t)x49 & 0xffffff);
+ uint64_t x52 = (x50 + x44);
+ uint64_t x53 = (x52 >> 0x18);
+ uint32_t x54 = ((uint32_t)x52 & 0xffffff);
+ uint64_t x55 = (x53 + x43);
+ uint64_t x56 = (x55 >> 0x18);
+ uint32_t x57 = ((uint32_t)x55 & 0xffffff);
+ uint64_t x58 = (x56 + x42);
+ uint64_t x59 = (x58 >> 0x18);
+ uint32_t x60 = ((uint32_t)x58 & 0xffffff);
+ uint64_t x61 = (x59 + x41);
+ uint64_t x62 = (x61 >> 0x18);
+ uint32_t x63 = ((uint32_t)x61 & 0xffffff);
+ uint64_t x64 = (x62 + x40);
+ uint64_t x65 = (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint64_t x67 = (x65 + x39);
+ uint64_t x68 = (x67 >> 0x17);
+ uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ uint64_t x70 = (x68 + x38);
+ uint64_t x71 = (x70 >> 0x18);
+ uint32_t x72 = ((uint32_t)x70 & 0xffffff);
+ uint64_t x73 = (x71 + x37);
+ uint64_t x74 = (x73 >> 0x18);
+ uint32_t x75 = ((uint32_t)x73 & 0xffffff);
+ uint64_t x76 = (x74 + x36);
+ uint64_t x77 = (x76 >> 0x18);
+ uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ uint64_t x79 = (x77 + x35);
+ uint64_t x80 = (x79 >> 0x18);
+ uint32_t x81 = ((uint32_t)x79 & 0xffffff);
+ uint64_t x82 = (x80 + x34);
+ uint64_t x83 = (x82 >> 0x18);
+ uint32_t x84 = ((uint32_t)x82 & 0xffffff);
+ uint64_t x85 = (x83 + x33);
+ uint64_t x86 = (x85 >> 0x18);
+ uint32_t x87 = ((uint32_t)x85 & 0xffffff);
+ uint64_t x88 = (x86 + x32);
+ uint64_t x89 = (x88 >> 0x18);
+ uint32_t x90 = ((uint32_t)x88 & 0xffffff);
+ uint64_t x91 = (x89 + x31);
+ uint64_t x92 = (x91 >> 0x17);
+ uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
+ uint64_t x94 = (x48 + (0x69 * x92));
+ uint32_t x95 = (uint32_t) (x94 >> 0x18);
+ uint32_t x96 = ((uint32_t)x94 & 0xffffff);
+ uint32_t x97 = (x95 + x51);
+ uint32_t x98 = (x97 >> 0x18);
+ uint32_t x99 = (x97 & 0xffffff);
+ return (Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, (x98 + x54), Return x99, Return x96))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesub.c b/src/Specific/solinas32_2e382m105_16limbs/fesub.c
new file mode 100644
index 000000000..27892f503
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesub.c
@@ -0,0 +1,51 @@
+static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
+ { const uint32_t x32 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x62 = in2[15];
+ { const uint32_t x63 = in2[14];
+ { const uint32_t x61 = in2[13];
+ { const uint32_t x59 = in2[12];
+ { const uint32_t x57 = in2[11];
+ { const uint32_t x55 = in2[10];
+ { const uint32_t x53 = in2[9];
+ { const uint32_t x51 = in2[8];
+ { const uint32_t x49 = in2[7];
+ { const uint32_t x47 = in2[6];
+ { const uint32_t x45 = in2[5];
+ { const uint32_t x43 = in2[4];
+ { const uint32_t x41 = in2[3];
+ { const uint32_t x39 = in2[2];
+ { const uint32_t x37 = in2[1];
+ { const uint32_t x35 = in2[0];
+ out[0] = ((Const 33554222 + x5) - x35);
+ out[1] = ((0x1fffffe + x7) - x37);
+ out[2] = ((0x1fffffe + x9) - x39);
+ out[3] = ((0x1fffffe + x11) - x41);
+ out[4] = ((0x1fffffe + x13) - x43);
+ out[5] = ((0x1fffffe + x15) - x45);
+ out[6] = ((0x1fffffe + x17) - x47);
+ out[7] = ((0xfffffe + x19) - x49);
+ out[8] = ((0x1fffffe + x21) - x51);
+ out[9] = ((0x1fffffe + x23) - x53);
+ out[10] = ((0x1fffffe + x25) - x55);
+ out[11] = ((0x1fffffe + x27) - x57);
+ out[12] = ((0x1fffffe + x29) - x59);
+ out[13] = ((0x1fffffe + x31) - x61);
+ out[14] = ((0x1fffffe + x33) - x63);
+ out[15] = ((0xfffffe + x32) - x62);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.log b/src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.log
new file mode 100644
index 000000000..7a1220c94
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
+ (((0xfffffe + x32) - x62), ((0x1fffffe + x33) - x63), ((0x1fffffe + x31) - x61), ((0x1fffffe + x29) - x59), ((0x1fffffe + x27) - x57), ((0x1fffffe + x25) - x55), ((0x1fffffe + x23) - x53), ((0x1fffffe + x21) - x51), ((0xfffffe + x19) - x49), ((0x1fffffe + x17) - x47), ((0x1fffffe + x15) - x45), ((0x1fffffe + x13) - x43), ((0x1fffffe + x11) - x41), ((0x1fffffe + x9) - x39), ((0x1fffffe + x7) - x37), ((Const 33554222 + x5) - x35)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105_16limbs/freeze.c b/src/Specific/solinas32_2e382m105_16limbs/freeze.c
new file mode 100644
index 000000000..1b6a9e8aa
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/freeze.c
@@ -0,0 +1,84 @@
+static void freeze(uint32_t out[16], const uint32_t in1[16]) {
+ { const uint32_t x29 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777111);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x7fffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
+ { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
+ { uint32_t x80 = (x79 & Const 16777111);
+ { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
+ { uint32_t x84 = (x79 & 0xffffff);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
+ { uint32_t x88 = (x79 & 0xffffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
+ { uint32_t x92 = (x79 & 0xffffff);
+ { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
+ { uint32_t x96 = (x79 & 0xffffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
+ { uint32_t x100 = (x79 & 0xffffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
+ { uint32_t x104 = (x79 & 0xffffff);
+ { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
+ { uint32_t x108 = (x79 & 0x7fffff);
+ { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
+ { uint32_t x112 = (x79 & 0xffffff);
+ { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
+ { uint32_t x116 = (x79 & 0xffffff);
+ { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
+ { uint32_t x120 = (x79 & 0xffffff);
+ { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
+ { uint32_t x124 = (x79 & 0xffffff);
+ { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
+ { uint32_t x128 = (x79 & 0xffffff);
+ { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
+ { uint32_t x132 = (x79 & 0xffffff);
+ { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
+ { uint32_t x136 = (x79 & 0xffffff);
+ { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
+ { uint32_t x140 = (x79 & 0x7fffff);
+ { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
+ out[0] = x82;
+ out[1] = x86;
+ out[2] = x90;
+ out[3] = x94;
+ out[4] = x98;
+ out[5] = x102;
+ out[6] = x106;
+ out[7] = x110;
+ out[8] = x114;
+ out[9] = x118;
+ out[10] = x122;
+ out[11] = x126;
+ out[12] = x130;
+ out[13] = x134;
+ out[14] = x138;
+ out[15] = x142;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.log b/src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.log
new file mode 100644
index 000000000..3e49e245c
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777111);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x7fffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
+ uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
+ uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
+ uint32_t x80 = (x79 & Const 16777111);
+ uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
+ uint32_t x84 = (x79 & 0xffffff);
+ uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
+ uint32_t x88 = (x79 & 0xffffff);
+ uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
+ uint32_t x92 = (x79 & 0xffffff);
+ uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
+ uint32_t x96 = (x79 & 0xffffff);
+ uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
+ uint32_t x100 = (x79 & 0xffffff);
+ uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
+ uint32_t x104 = (x79 & 0xffffff);
+ uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
+ uint32_t x108 = (x79 & 0x7fffff);
+ uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
+ uint32_t x112 = (x79 & 0xffffff);
+ uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
+ uint32_t x116 = (x79 & 0xffffff);
+ uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
+ uint32_t x120 = (x79 & 0xffffff);
+ uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
+ uint32_t x124 = (x79 & 0xffffff);
+ uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
+ uint32_t x128 = (x79 & 0xffffff);
+ uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
+ uint32_t x132 = (x79 & 0xffffff);
+ uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
+ uint32_t x136 = (x79 & 0xffffff);
+ uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
+ uint32_t x140 = (x79 & 0x7fffff);
+ uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
+ (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105_17limbs/feadd.c b/src/Specific/solinas32_2e382m105_17limbs/feadd.c
new file mode 100644
index 000000000..30eb11eae
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/feadd.c
@@ -0,0 +1,54 @@
+static void feadd(uint32_t out[17], const uint32_t in1[17], const uint32_t in2[17]) {
+ { const uint32_t x34 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x66 = in2[16];
+ { const uint32_t x67 = in2[15];
+ { const uint32_t x65 = in2[14];
+ { const uint32_t x63 = in2[13];
+ { const uint32_t x61 = in2[12];
+ { const uint32_t x59 = in2[11];
+ { const uint32_t x57 = in2[10];
+ { const uint32_t x55 = in2[9];
+ { const uint32_t x53 = in2[8];
+ { const uint32_t x51 = in2[7];
+ { const uint32_t x49 = in2[6];
+ { const uint32_t x47 = in2[5];
+ { const uint32_t x45 = in2[4];
+ { const uint32_t x43 = in2[3];
+ { const uint32_t x41 = in2[2];
+ { const uint32_t x39 = in2[1];
+ { const uint32_t x37 = in2[0];
+ out[0] = (x5 + x37);
+ out[1] = (x7 + x39);
+ out[2] = (x9 + x41);
+ out[3] = (x11 + x43);
+ out[4] = (x13 + x45);
+ out[5] = (x15 + x47);
+ out[6] = (x17 + x49);
+ out[7] = (x19 + x51);
+ out[8] = (x21 + x53);
+ out[9] = (x23 + x55);
+ out[10] = (x25 + x57);
+ out[11] = (x27 + x59);
+ out[12] = (x29 + x61);
+ out[13] = (x31 + x63);
+ out[14] = (x33 + x65);
+ out[15] = (x35 + x67);
+ out[16] = (x34 + x66);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.log b/src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.log
new file mode 100644
index 000000000..7324e0941
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x34, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x66, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37))%core,
+ ((x34 + x66), (x35 + x67), (x33 + x65), (x31 + x63), (x29 + x61), (x27 + x59), (x25 + x57), (x23 + x55), (x21 + x53), (x19 + x51), (x17 + x49), (x15 + x47), (x13 + x45), (x11 + x43), (x9 + x41), (x7 + x39), (x5 + x37)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105_17limbs/fesub.c b/src/Specific/solinas32_2e382m105_17limbs/fesub.c
new file mode 100644
index 000000000..56d967246
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/fesub.c
@@ -0,0 +1,54 @@
+static void fesub(uint32_t out[17], const uint32_t in1[17], const uint32_t in2[17]) {
+ { const uint32_t x34 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x66 = in2[16];
+ { const uint32_t x67 = in2[15];
+ { const uint32_t x65 = in2[14];
+ { const uint32_t x63 = in2[13];
+ { const uint32_t x61 = in2[12];
+ { const uint32_t x59 = in2[11];
+ { const uint32_t x57 = in2[10];
+ { const uint32_t x55 = in2[9];
+ { const uint32_t x53 = in2[8];
+ { const uint32_t x51 = in2[7];
+ { const uint32_t x49 = in2[6];
+ { const uint32_t x47 = in2[5];
+ { const uint32_t x45 = in2[4];
+ { const uint32_t x43 = in2[3];
+ { const uint32_t x41 = in2[2];
+ { const uint32_t x39 = in2[1];
+ { const uint32_t x37 = in2[0];
+ out[0] = ((Const 16777006 + x5) - x37);
+ out[1] = ((0x7ffffe + x7) - x39);
+ out[2] = ((0xfffffe + x9) - x41);
+ out[3] = ((0x7ffffe + x11) - x43);
+ out[4] = ((0xfffffe + x13) - x45);
+ out[5] = ((0x7ffffe + x15) - x47);
+ out[6] = ((0xfffffe + x17) - x49);
+ out[7] = ((0x7ffffe + x19) - x51);
+ out[8] = ((0xfffffe + x21) - x53);
+ out[9] = ((0x7ffffe + x23) - x55);
+ out[10] = ((0xfffffe + x25) - x57);
+ out[11] = ((0x7ffffe + x27) - x59);
+ out[12] = ((0xfffffe + x29) - x61);
+ out[13] = ((0x7ffffe + x31) - x63);
+ out[14] = ((0xfffffe + x33) - x65);
+ out[15] = ((0x7ffffe + x35) - x67);
+ out[16] = ((0x7ffffe + x34) - x66);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.log b/src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.log
new file mode 100644
index 000000000..ffc38cd07
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x34, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x66, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37))%core,
+ (((0x7ffffe + x34) - x66), ((0x7ffffe + x35) - x67), ((0xfffffe + x33) - x65), ((0x7ffffe + x31) - x63), ((0xfffffe + x29) - x61), ((0x7ffffe + x27) - x59), ((0xfffffe + x25) - x57), ((0x7ffffe + x23) - x55), ((0xfffffe + x21) - x53), ((0x7ffffe + x19) - x51), ((0xfffffe + x17) - x49), ((0x7ffffe + x15) - x47), ((0xfffffe + x13) - x45), ((0x7ffffe + x11) - x43), ((0xfffffe + x9) - x41), ((0x7ffffe + x7) - x39), ((Const 16777006 + x5) - x37)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105_17limbs/freeze.c b/src/Specific/solinas32_2e382m105_17limbs/freeze.c
new file mode 100644
index 000000000..e445f3a71
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/freeze.c
@@ -0,0 +1,89 @@
+static void freeze(uint32_t out[17], const uint32_t in1[17]) {
+ { const uint32_t x31 = in1[16];
+ { const uint32_t x32 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388503);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x4, 0x3fffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x6, 0x7fffff);
+ { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x8, 0x3fffff);
+ { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x10, 0x7fffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x12, 0x3fffff);
+ { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x14, 0x7fffff);
+ { uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x16, 0x3fffff);
+ { uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x18, 0x7fffff);
+ { uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x20, 0x3fffff);
+ { uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x22, 0x7fffff);
+ { uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x24, 0x3fffff);
+ { uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x26, 0x7fffff);
+ { uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x28, 0x3fffff);
+ { uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x30, 0x7fffff);
+ { uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x32, 0x3fffff);
+ { uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x31, 0x3fffff);
+ { uint32_t x84 = cmovznz32(x83, 0x0, 0xffffffff);
+ { uint32_t x85 = (x84 & Const 8388503);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x34, Return x85);
+ { uint32_t x89 = (x84 & 0x3fffff);
+ { uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x37, Return x89);
+ { uint32_t x93 = (x84 & 0x7fffff);
+ { uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x40, Return x93);
+ { uint32_t x97 = (x84 & 0x3fffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x43, Return x97);
+ { uint32_t x101 = (x84 & 0x7fffff);
+ { uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x46, Return x101);
+ { uint32_t x105 = (x84 & 0x3fffff);
+ { uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x49, Return x105);
+ { uint32_t x109 = (x84 & 0x7fffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x52, Return x109);
+ { uint32_t x113 = (x84 & 0x3fffff);
+ { uint32_t x115, uint8_t x116 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x55, Return x113);
+ { uint32_t x117 = (x84 & 0x7fffff);
+ { uint32_t x119, uint8_t x120 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x116, Return x58, Return x117);
+ { uint32_t x121 = (x84 & 0x3fffff);
+ { uint32_t x123, uint8_t x124 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x120, Return x61, Return x121);
+ { uint32_t x125 = (x84 & 0x7fffff);
+ { uint32_t x127, uint8_t x128 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x124, Return x64, Return x125);
+ { uint32_t x129 = (x84 & 0x3fffff);
+ { uint32_t x131, uint8_t x132 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x128, Return x67, Return x129);
+ { uint32_t x133 = (x84 & 0x7fffff);
+ { uint32_t x135, uint8_t x136 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x132, Return x70, Return x133);
+ { uint32_t x137 = (x84 & 0x3fffff);
+ { uint32_t x139, uint8_t x140 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x136, Return x73, Return x137);
+ { uint32_t x141 = (x84 & 0x7fffff);
+ { uint32_t x143, uint8_t x144 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x140, Return x76, Return x141);
+ { uint32_t x145 = (x84 & 0x3fffff);
+ { uint32_t x147, uint8_t x148 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x144, Return x79, Return x145);
+ { uint32_t x149 = (x84 & 0x3fffff);
+ { uint32_t x151, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x148, Return x82, Return x149);
+ out[0] = x87;
+ out[1] = x91;
+ out[2] = x95;
+ out[3] = x99;
+ out[4] = x103;
+ out[5] = x107;
+ out[6] = x111;
+ out[7] = x115;
+ out[8] = x119;
+ out[9] = x123;
+ out[10] = x127;
+ out[11] = x131;
+ out[12] = x135;
+ out[13] = x139;
+ out[14] = x143;
+ out[15] = x147;
+ out[16] = x151;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.log b/src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.log
new file mode 100644
index 000000000..9ba5e0e44
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.log
@@ -0,0 +1,59 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x31, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388503);
+ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x4, 0x3fffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x6, 0x7fffff);
+ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x8, 0x3fffff);
+ uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x10, 0x7fffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x12, 0x3fffff);
+ uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x14, 0x7fffff);
+ uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x16, 0x3fffff);
+ uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x18, 0x7fffff);
+ uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x20, 0x3fffff);
+ uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x22, 0x7fffff);
+ uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x24, 0x3fffff);
+ uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x26, 0x7fffff);
+ uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x28, 0x3fffff);
+ uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x30, 0x7fffff);
+ uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x32, 0x3fffff);
+ uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x31, 0x3fffff);
+ uint32_t x84 = cmovznz32(x83, 0x0, 0xffffffff);
+ uint32_t x85 = (x84 & Const 8388503);
+ uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x34, Return x85);
+ uint32_t x89 = (x84 & 0x3fffff);
+ uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x37, Return x89);
+ uint32_t x93 = (x84 & 0x7fffff);
+ uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x40, Return x93);
+ uint32_t x97 = (x84 & 0x3fffff);
+ uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x43, Return x97);
+ uint32_t x101 = (x84 & 0x7fffff);
+ uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x46, Return x101);
+ uint32_t x105 = (x84 & 0x3fffff);
+ uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x49, Return x105);
+ uint32_t x109 = (x84 & 0x7fffff);
+ uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x52, Return x109);
+ uint32_t x113 = (x84 & 0x3fffff);
+ uint32_t x115, uint8_t x116 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x55, Return x113);
+ uint32_t x117 = (x84 & 0x7fffff);
+ uint32_t x119, uint8_t x120 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x116, Return x58, Return x117);
+ uint32_t x121 = (x84 & 0x3fffff);
+ uint32_t x123, uint8_t x124 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x120, Return x61, Return x121);
+ uint32_t x125 = (x84 & 0x7fffff);
+ uint32_t x127, uint8_t x128 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x124, Return x64, Return x125);
+ uint32_t x129 = (x84 & 0x3fffff);
+ uint32_t x131, uint8_t x132 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x128, Return x67, Return x129);
+ uint32_t x133 = (x84 & 0x7fffff);
+ uint32_t x135, uint8_t x136 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x132, Return x70, Return x133);
+ uint32_t x137 = (x84 & 0x3fffff);
+ uint32_t x139, uint8_t x140 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x136, Return x73, Return x137);
+ uint32_t x141 = (x84 & 0x7fffff);
+ uint32_t x143, uint8_t x144 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x140, Return x76, Return x141);
+ uint32_t x145 = (x84 & 0x3fffff);
+ uint32_t x147, uint8_t x148 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x144, Return x79, Return x145);
+ uint32_t x149 = (x84 & 0x3fffff);
+ uint32_t x151, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x148, Return x82, Return x149);
+ (Return x151, Return x147, Return x143, Return x139, Return x135, Return x131, Return x127, Return x123, Return x119, Return x115, Return x111, Return x107, Return x103, Return x99, Return x95, Return x91, Return x87))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e383m187_16limbs/freeze.c b/src/Specific/solinas32_2e383m187_16limbs/freeze.c
new file mode 100644
index 000000000..66c0a8cdf
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/freeze.c
@@ -0,0 +1,84 @@
+static void freeze(uint32_t out[16], const uint32_t in1[16]) {
+ { const uint32_t x29 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777029);
+ { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
+ { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
+ { uint32_t x80 = (x79 & Const 16777029);
+ { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
+ { uint32_t x84 = (x79 & 0xffffff);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
+ { uint32_t x88 = (x79 & 0xffffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
+ { uint32_t x92 = (x79 & 0xffffff);
+ { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
+ { uint32_t x96 = (x79 & 0xffffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
+ { uint32_t x100 = (x79 & 0xffffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
+ { uint32_t x104 = (x79 & 0xffffff);
+ { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
+ { uint32_t x108 = (x79 & 0xffffff);
+ { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
+ { uint32_t x112 = (x79 & 0xffffff);
+ { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
+ { uint32_t x116 = (x79 & 0xffffff);
+ { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
+ { uint32_t x120 = (x79 & 0xffffff);
+ { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
+ { uint32_t x124 = (x79 & 0xffffff);
+ { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
+ { uint32_t x128 = (x79 & 0xffffff);
+ { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
+ { uint32_t x132 = (x79 & 0xffffff);
+ { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
+ { uint32_t x136 = (x79 & 0xffffff);
+ { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
+ { uint32_t x140 = (x79 & 0x7fffff);
+ { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
+ out[0] = x82;
+ out[1] = x86;
+ out[2] = x90;
+ out[3] = x94;
+ out[4] = x98;
+ out[5] = x102;
+ out[6] = x106;
+ out[7] = x110;
+ out[8] = x114;
+ out[9] = x118;
+ out[10] = x122;
+ out[11] = x126;
+ out[12] = x130;
+ out[13] = x134;
+ out[14] = x138;
+ out[15] = x142;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.log b/src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.log
new file mode 100644
index 000000000..99a8f61e4
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.log
@@ -0,0 +1,56 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 16777029);
+ uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
+ uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
+ uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
+ uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
+ uint32_t x80 = (x79 & Const 16777029);
+ uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
+ uint32_t x84 = (x79 & 0xffffff);
+ uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
+ uint32_t x88 = (x79 & 0xffffff);
+ uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
+ uint32_t x92 = (x79 & 0xffffff);
+ uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
+ uint32_t x96 = (x79 & 0xffffff);
+ uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
+ uint32_t x100 = (x79 & 0xffffff);
+ uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
+ uint32_t x104 = (x79 & 0xffffff);
+ uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
+ uint32_t x108 = (x79 & 0xffffff);
+ uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
+ uint32_t x112 = (x79 & 0xffffff);
+ uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
+ uint32_t x116 = (x79 & 0xffffff);
+ uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
+ uint32_t x120 = (x79 & 0xffffff);
+ uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
+ uint32_t x124 = (x79 & 0xffffff);
+ uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
+ uint32_t x128 = (x79 & 0xffffff);
+ uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
+ uint32_t x132 = (x79 & 0xffffff);
+ uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
+ uint32_t x136 = (x79 & 0xffffff);
+ uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
+ uint32_t x140 = (x79 & 0x7fffff);
+ uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
+ (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/femul.c b/src/Specific/solinas64_2e256m4294968273_10limbs/femul.c
index d094ad2a5..2ec0954ba 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/femul.c
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/femul.c
@@ -20,15 +20,15 @@ static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[1
{ const uint64_t x25 = in2[1];
{ const uint64_t x23 = in2[0];
{ uint64_t x40 = ((x5 * x38) + ((x7 * x39) + ((0x2 * (x9 * x37)) + ((x11 * x35) + ((x13 * x33) + ((x15 * x31) + ((x17 * x29) + ((0x2 * (x19 * x27)) + ((x21 * x25) + (x20 * x23))))))))));
- { uint128_t x41 = (((x5 * x39) + ((0x2 * (x7 * x37)) + ((0x2 * (x9 * x35)) + ((x11 * x33) + ((0x2 * (x13 * x31)) + ((x15 * x29) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (x21 * x23))))))))) + ((uint128_t)(Const 4294968273) * (0x2 * (x20 * x38))));
- { uint128_t x42 = (((x5 * x37) + ((x7 * x35) + ((x9 * x33) + ((x11 * x31) + ((x13 * x29) + ((x15 * x27) + ((x17 * x25) + (x19 * x23)))))))) + ((uint128_t)(Const 4294968273) * ((x21 * x38) + (x20 * x39))));
- { uint128_t x43 = (((x5 * x35) + ((x7 * x33) + ((0x2 * (x9 * x31)) + ((x11 * x29) + ((0x2 * (x13 * x27)) + ((x15 * x25) + (x17 * x23))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x19 * x38)) + ((x21 * x39) + (0x2 * (x20 * x37))))));
- { uint128_t x44 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((0x2 * (x9 * x29)) + ((0x2 * (x11 * x27)) + ((0x2 * (x13 * x25)) + (x15 * x23)))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x17 * x38)) + ((0x2 * (x19 * x39)) + ((0x2 * (x21 * x37)) + (0x2 * (x20 * x35)))))));
- { uint128_t x45 = (((x5 * x31) + ((x7 * x29) + ((0x2 * (x9 * x27)) + ((x11 * x25) + (x13 * x23))))) + ((uint128_t)(Const 4294968273) * ((x15 * x38) + ((x17 * x39) + ((0x2 * (x19 * x37)) + ((x21 * x35) + (x20 * x33)))))));
- { uint128_t x46 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((0x2 * (x9 * x25)) + (x11 * x23)))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x13 * x38)) + ((x15 * x39) + ((0x2 * (x17 * x37)) + ((0x2 * (x19 * x35)) + ((x21 * x33) + (0x2 * (x20 * x31)))))))));
- { uint128_t x47 = (((x5 * x27) + ((x7 * x25) + (x9 * x23))) + ((uint128_t)(Const 4294968273) * ((x11 * x38) + ((x13 * x39) + ((x15 * x37) + ((x17 * x35) + ((x19 * x33) + ((x21 * x31) + (x20 * x29)))))))));
- { uint128_t x48 = (((x5 * x25) + (x7 * x23)) + ((uint128_t)(Const 4294968273) * ((0x2 * (x9 * x38)) + ((x11 * x39) + ((0x2 * (x13 * x37)) + ((x15 * x35) + ((x17 * x33) + ((0x2 * (x19 * x31)) + ((x21 * x29) + (0x2 * (x20 * x27)))))))))));
- { uint128_t x49 = ((x5 * x23) + ((uint128_t)(Const 4294968273) * ((0x2 * (x7 * x38)) + ((0x2 * (x9 * x39)) + ((0x2 * (x11 * x37)) + ((0x2 * (x13 * x35)) + ((x15 * x33) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + ((0x2 * (x21 * x27)) + (0x2 * (x20 * x25))))))))))));
+ { uint128_t x41 = (((x5 * x39) + ((0x2 * (x7 * x37)) + ((0x2 * (x9 * x35)) + ((x11 * x33) + ((0x2 * (x13 * x31)) + ((x15 * x29) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (x21 * x23))))))))) + ((uint128_t)0x1000003d1 * (0x2 * (x20 * x38))));
+ { uint128_t x42 = (((x5 * x37) + ((x7 * x35) + ((x9 * x33) + ((x11 * x31) + ((x13 * x29) + ((x15 * x27) + ((x17 * x25) + (x19 * x23)))))))) + ((uint128_t)0x1000003d1 * ((x21 * x38) + (x20 * x39))));
+ { uint128_t x43 = (((x5 * x35) + ((x7 * x33) + ((0x2 * (x9 * x31)) + ((x11 * x29) + ((0x2 * (x13 * x27)) + ((x15 * x25) + (x17 * x23))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x19 * x38)) + ((x21 * x39) + (0x2 * (x20 * x37))))));
+ { uint128_t x44 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((0x2 * (x9 * x29)) + ((0x2 * (x11 * x27)) + ((0x2 * (x13 * x25)) + (x15 * x23)))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x17 * x38)) + ((0x2 * (x19 * x39)) + ((0x2 * (x21 * x37)) + (0x2 * (x20 * x35)))))));
+ { uint128_t x45 = (((x5 * x31) + ((x7 * x29) + ((0x2 * (x9 * x27)) + ((x11 * x25) + (x13 * x23))))) + ((uint128_t)0x1000003d1 * ((x15 * x38) + ((x17 * x39) + ((0x2 * (x19 * x37)) + ((x21 * x35) + (x20 * x33)))))));
+ { uint128_t x46 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((0x2 * (x9 * x25)) + (x11 * x23)))) + ((uint128_t)0x1000003d1 * ((0x2 * (x13 * x38)) + ((x15 * x39) + ((0x2 * (x17 * x37)) + ((0x2 * (x19 * x35)) + ((x21 * x33) + (0x2 * (x20 * x31)))))))));
+ { uint128_t x47 = (((x5 * x27) + ((x7 * x25) + (x9 * x23))) + ((uint128_t)0x1000003d1 * ((x11 * x38) + ((x13 * x39) + ((x15 * x37) + ((x17 * x35) + ((x19 * x33) + ((x21 * x31) + (x20 * x29)))))))));
+ { uint128_t x48 = (((x5 * x25) + (x7 * x23)) + ((uint128_t)0x1000003d1 * ((0x2 * (x9 * x38)) + ((x11 * x39) + ((0x2 * (x13 * x37)) + ((x15 * x35) + ((x17 * x33) + ((0x2 * (x19 * x31)) + ((x21 * x29) + (0x2 * (x20 * x27)))))))))));
+ { uint128_t x49 = ((x5 * x23) + ((uint128_t)0x1000003d1 * ((0x2 * (x7 * x38)) + ((0x2 * (x9 * x39)) + ((0x2 * (x11 * x37)) + ((0x2 * (x13 * x35)) + ((x15 * x33) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + ((0x2 * (x21 * x27)) + (0x2 * (x20 * x25))))))))))));
{ uint128_t x50 = (x49 >> 0x1a);
{ uint64_t x51 = ((uint64_t)x49 & 0x3ffffff);
{ uint128_t x52 = (x50 + x48);
@@ -58,7 +58,7 @@ static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[1
{ uint64_t x76 = (x74 + x40);
{ uint64_t x77 = (x76 >> 0x19);
{ uint64_t x78 = (x76 & 0x1ffffff);
- { uint128_t x79 = (x51 + ((uint128_t)(Const 4294968273) * x77));
+ { uint128_t x79 = (x51 + ((uint128_t)0x1000003d1 * x77));
{ uint64_t x80 = (uint64_t) (x79 >> 0x1a);
{ uint64_t x81 = ((uint64_t)x79 & 0x3ffffff);
{ uint64_t x82 = (x80 + x54);
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.log b/src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.log
index 49a889825..ced98fd6d 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.log
@@ -3,15 +3,15 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
uint64_t x40 = ((x5 * x38) + ((x7 * x39) + ((0x2 * (x9 * x37)) + ((x11 * x35) + ((x13 * x33) + ((x15 * x31) + ((x17 * x29) + ((0x2 * (x19 * x27)) + ((x21 * x25) + (x20 * x23))))))))));
- uint128_t x41 = (((x5 * x39) + ((0x2 * (x7 * x37)) + ((0x2 * (x9 * x35)) + ((x11 * x33) + ((0x2 * (x13 * x31)) + ((x15 * x29) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (x21 * x23))))))))) + ((uint128_t)(Const 4294968273) * (0x2 * (x20 * x38))));
- uint128_t x42 = (((x5 * x37) + ((x7 * x35) + ((x9 * x33) + ((x11 * x31) + ((x13 * x29) + ((x15 * x27) + ((x17 * x25) + (x19 * x23)))))))) + ((uint128_t)(Const 4294968273) * ((x21 * x38) + (x20 * x39))));
- uint128_t x43 = (((x5 * x35) + ((x7 * x33) + ((0x2 * (x9 * x31)) + ((x11 * x29) + ((0x2 * (x13 * x27)) + ((x15 * x25) + (x17 * x23))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x19 * x38)) + ((x21 * x39) + (0x2 * (x20 * x37))))));
- uint128_t x44 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((0x2 * (x9 * x29)) + ((0x2 * (x11 * x27)) + ((0x2 * (x13 * x25)) + (x15 * x23)))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x17 * x38)) + ((0x2 * (x19 * x39)) + ((0x2 * (x21 * x37)) + (0x2 * (x20 * x35)))))));
- uint128_t x45 = (((x5 * x31) + ((x7 * x29) + ((0x2 * (x9 * x27)) + ((x11 * x25) + (x13 * x23))))) + ((uint128_t)(Const 4294968273) * ((x15 * x38) + ((x17 * x39) + ((0x2 * (x19 * x37)) + ((x21 * x35) + (x20 * x33)))))));
- uint128_t x46 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((0x2 * (x9 * x25)) + (x11 * x23)))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x13 * x38)) + ((x15 * x39) + ((0x2 * (x17 * x37)) + ((0x2 * (x19 * x35)) + ((x21 * x33) + (0x2 * (x20 * x31)))))))));
- uint128_t x47 = (((x5 * x27) + ((x7 * x25) + (x9 * x23))) + ((uint128_t)(Const 4294968273) * ((x11 * x38) + ((x13 * x39) + ((x15 * x37) + ((x17 * x35) + ((x19 * x33) + ((x21 * x31) + (x20 * x29)))))))));
- uint128_t x48 = (((x5 * x25) + (x7 * x23)) + ((uint128_t)(Const 4294968273) * ((0x2 * (x9 * x38)) + ((x11 * x39) + ((0x2 * (x13 * x37)) + ((x15 * x35) + ((x17 * x33) + ((0x2 * (x19 * x31)) + ((x21 * x29) + (0x2 * (x20 * x27)))))))))));
- uint128_t x49 = ((x5 * x23) + ((uint128_t)(Const 4294968273) * ((0x2 * (x7 * x38)) + ((0x2 * (x9 * x39)) + ((0x2 * (x11 * x37)) + ((0x2 * (x13 * x35)) + ((x15 * x33) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + ((0x2 * (x21 * x27)) + (0x2 * (x20 * x25))))))))))));
+ uint128_t x41 = (((x5 * x39) + ((0x2 * (x7 * x37)) + ((0x2 * (x9 * x35)) + ((x11 * x33) + ((0x2 * (x13 * x31)) + ((x15 * x29) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (x21 * x23))))))))) + ((uint128_t)0x1000003d1 * (0x2 * (x20 * x38))));
+ uint128_t x42 = (((x5 * x37) + ((x7 * x35) + ((x9 * x33) + ((x11 * x31) + ((x13 * x29) + ((x15 * x27) + ((x17 * x25) + (x19 * x23)))))))) + ((uint128_t)0x1000003d1 * ((x21 * x38) + (x20 * x39))));
+ uint128_t x43 = (((x5 * x35) + ((x7 * x33) + ((0x2 * (x9 * x31)) + ((x11 * x29) + ((0x2 * (x13 * x27)) + ((x15 * x25) + (x17 * x23))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x19 * x38)) + ((x21 * x39) + (0x2 * (x20 * x37))))));
+ uint128_t x44 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((0x2 * (x9 * x29)) + ((0x2 * (x11 * x27)) + ((0x2 * (x13 * x25)) + (x15 * x23)))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x17 * x38)) + ((0x2 * (x19 * x39)) + ((0x2 * (x21 * x37)) + (0x2 * (x20 * x35)))))));
+ uint128_t x45 = (((x5 * x31) + ((x7 * x29) + ((0x2 * (x9 * x27)) + ((x11 * x25) + (x13 * x23))))) + ((uint128_t)0x1000003d1 * ((x15 * x38) + ((x17 * x39) + ((0x2 * (x19 * x37)) + ((x21 * x35) + (x20 * x33)))))));
+ uint128_t x46 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((0x2 * (x9 * x25)) + (x11 * x23)))) + ((uint128_t)0x1000003d1 * ((0x2 * (x13 * x38)) + ((x15 * x39) + ((0x2 * (x17 * x37)) + ((0x2 * (x19 * x35)) + ((x21 * x33) + (0x2 * (x20 * x31)))))))));
+ uint128_t x47 = (((x5 * x27) + ((x7 * x25) + (x9 * x23))) + ((uint128_t)0x1000003d1 * ((x11 * x38) + ((x13 * x39) + ((x15 * x37) + ((x17 * x35) + ((x19 * x33) + ((x21 * x31) + (x20 * x29)))))))));
+ uint128_t x48 = (((x5 * x25) + (x7 * x23)) + ((uint128_t)0x1000003d1 * ((0x2 * (x9 * x38)) + ((x11 * x39) + ((0x2 * (x13 * x37)) + ((x15 * x35) + ((x17 * x33) + ((0x2 * (x19 * x31)) + ((x21 * x29) + (0x2 * (x20 * x27)))))))))));
+ uint128_t x49 = ((x5 * x23) + ((uint128_t)0x1000003d1 * ((0x2 * (x7 * x38)) + ((0x2 * (x9 * x39)) + ((0x2 * (x11 * x37)) + ((0x2 * (x13 * x35)) + ((x15 * x33) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + ((0x2 * (x21 * x27)) + (0x2 * (x20 * x25))))))))))));
uint128_t x50 = (x49 >> 0x1a);
uint64_t x51 = ((uint64_t)x49 & 0x3ffffff);
uint128_t x52 = (x50 + x48);
@@ -41,7 +41,7 @@ Interp-η
uint64_t x76 = (x74 + x40);
uint64_t x77 = (x76 >> 0x19);
uint64_t x78 = (x76 & 0x1ffffff);
- uint128_t x79 = (x51 + ((uint128_t)(Const 4294968273) * x77));
+ uint128_t x79 = (x51 + ((uint128_t)0x1000003d1 * x77));
uint64_t x80 = (uint64_t) (x79 >> 0x1a);
uint64_t x81 = ((uint64_t)x79 & 0x3ffffff);
uint64_t x82 = (x80 + x54);
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.c b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.c
index bfd8feff4..52a26a638 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.c
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.c
@@ -10,15 +10,15 @@ static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
{ uint64_t x19 = ((x2 * x17) + ((x4 * x18) + ((0x2 * (x6 * x16)) + ((x8 * x14) + ((x10 * x12) + ((x12 * x10) + ((x14 * x8) + ((0x2 * (x16 * x6)) + ((x18 * x4) + (x17 * x2))))))))));
- { uint128_t x20 = (((x2 * x18) + ((0x2 * (x4 * x16)) + ((0x2 * (x6 * x14)) + ((x8 * x12) + ((0x2 * (x10 * x10)) + ((x12 * x8) + ((0x2 * (x14 * x6)) + ((0x2 * (x16 * x4)) + (x18 * x2))))))))) + ((uint128_t)(Const 4294968273) * (0x2 * (x17 * x17))));
- { uint128_t x21 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)(Const 4294968273) * ((x18 * x17) + (x17 * x18))));
- { uint128_t x22 = (((x2 * x14) + ((x4 * x12) + ((0x2 * (x6 * x10)) + ((x8 * x8) + ((0x2 * (x10 * x6)) + ((x12 * x4) + (x14 * x2))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x16 * x17)) + ((x18 * x18) + (0x2 * (x17 * x16))))));
- { uint128_t x23 = (((x2 * x12) + ((0x2 * (x4 * x10)) + ((0x2 * (x6 * x8)) + ((0x2 * (x8 * x6)) + ((0x2 * (x10 * x4)) + (x12 * x2)))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x14 * x17)) + ((0x2 * (x16 * x18)) + ((0x2 * (x18 * x16)) + (0x2 * (x17 * x14)))))));
- { uint128_t x24 = (((x2 * x10) + ((x4 * x8) + ((0x2 * (x6 * x6)) + ((x8 * x4) + (x10 * x2))))) + ((uint128_t)(Const 4294968273) * ((x12 * x17) + ((x14 * x18) + ((0x2 * (x16 * x16)) + ((x18 * x14) + (x17 * x12)))))));
- { uint128_t x25 = (((x2 * x8) + ((0x2 * (x4 * x6)) + ((0x2 * (x6 * x4)) + (x8 * x2)))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x10 * x17)) + ((x12 * x18) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + ((x18 * x12) + (0x2 * (x17 * x10)))))))));
- { uint128_t x26 = (((x2 * x6) + ((x4 * x4) + (x6 * x2))) + ((uint128_t)(Const 4294968273) * ((x8 * x17) + ((x10 * x18) + ((x12 * x16) + ((x14 * x14) + ((x16 * x12) + ((x18 * x10) + (x17 * x8)))))))));
- { uint128_t x27 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)(Const 4294968273) * ((0x2 * (x6 * x17)) + ((x8 * x18) + ((0x2 * (x10 * x16)) + ((x12 * x14) + ((x14 * x12) + ((0x2 * (x16 * x10)) + ((x18 * x8) + (0x2 * (x17 * x6)))))))))));
- { uint128_t x28 = ((x2 * x2) + ((uint128_t)(Const 4294968273) * ((0x2 * (x4 * x17)) + ((0x2 * (x6 * x18)) + ((0x2 * (x8 * x16)) + ((0x2 * (x10 * x14)) + ((x12 * x12) + ((0x2 * (x14 * x10)) + ((0x2 * (x16 * x8)) + ((0x2 * (x18 * x6)) + (0x2 * (x17 * x4))))))))))));
+ { uint128_t x20 = (((x2 * x18) + ((0x2 * (x4 * x16)) + ((0x2 * (x6 * x14)) + ((x8 * x12) + ((0x2 * (x10 * x10)) + ((x12 * x8) + ((0x2 * (x14 * x6)) + ((0x2 * (x16 * x4)) + (x18 * x2))))))))) + ((uint128_t)0x1000003d1 * (0x2 * (x17 * x17))));
+ { uint128_t x21 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)0x1000003d1 * ((x18 * x17) + (x17 * x18))));
+ { uint128_t x22 = (((x2 * x14) + ((x4 * x12) + ((0x2 * (x6 * x10)) + ((x8 * x8) + ((0x2 * (x10 * x6)) + ((x12 * x4) + (x14 * x2))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x16 * x17)) + ((x18 * x18) + (0x2 * (x17 * x16))))));
+ { uint128_t x23 = (((x2 * x12) + ((0x2 * (x4 * x10)) + ((0x2 * (x6 * x8)) + ((0x2 * (x8 * x6)) + ((0x2 * (x10 * x4)) + (x12 * x2)))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x14 * x17)) + ((0x2 * (x16 * x18)) + ((0x2 * (x18 * x16)) + (0x2 * (x17 * x14)))))));
+ { uint128_t x24 = (((x2 * x10) + ((x4 * x8) + ((0x2 * (x6 * x6)) + ((x8 * x4) + (x10 * x2))))) + ((uint128_t)0x1000003d1 * ((x12 * x17) + ((x14 * x18) + ((0x2 * (x16 * x16)) + ((x18 * x14) + (x17 * x12)))))));
+ { uint128_t x25 = (((x2 * x8) + ((0x2 * (x4 * x6)) + ((0x2 * (x6 * x4)) + (x8 * x2)))) + ((uint128_t)0x1000003d1 * ((0x2 * (x10 * x17)) + ((x12 * x18) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + ((x18 * x12) + (0x2 * (x17 * x10)))))))));
+ { uint128_t x26 = (((x2 * x6) + ((x4 * x4) + (x6 * x2))) + ((uint128_t)0x1000003d1 * ((x8 * x17) + ((x10 * x18) + ((x12 * x16) + ((x14 * x14) + ((x16 * x12) + ((x18 * x10) + (x17 * x8)))))))));
+ { uint128_t x27 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)0x1000003d1 * ((0x2 * (x6 * x17)) + ((x8 * x18) + ((0x2 * (x10 * x16)) + ((x12 * x14) + ((x14 * x12) + ((0x2 * (x16 * x10)) + ((x18 * x8) + (0x2 * (x17 * x6)))))))))));
+ { uint128_t x28 = ((x2 * x2) + ((uint128_t)0x1000003d1 * ((0x2 * (x4 * x17)) + ((0x2 * (x6 * x18)) + ((0x2 * (x8 * x16)) + ((0x2 * (x10 * x14)) + ((x12 * x12) + ((0x2 * (x14 * x10)) + ((0x2 * (x16 * x8)) + ((0x2 * (x18 * x6)) + (0x2 * (x17 * x4))))))))))));
{ uint128_t x29 = (x28 >> 0x1a);
{ uint64_t x30 = ((uint64_t)x28 & 0x3ffffff);
{ uint128_t x31 = (x29 + x27);
@@ -48,7 +48,7 @@ static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
{ uint64_t x55 = (x53 + x19);
{ uint64_t x56 = (x55 >> 0x19);
{ uint64_t x57 = (x55 & 0x1ffffff);
- { uint128_t x58 = (x30 + ((uint128_t)(Const 4294968273) * x56));
+ { uint128_t x58 = (x30 + ((uint128_t)0x1000003d1 * x56));
{ uint64_t x59 = (uint64_t) (x58 >> 0x1a);
{ uint64_t x60 = ((uint64_t)x58 & 0x3ffffff);
{ uint64_t x61 = (x59 + x33);
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.log b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.log
index e5b48b884..048495fe4 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.log
@@ -3,15 +3,15 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
uint64_t x19 = ((x2 * x17) + ((x4 * x18) + ((0x2 * (x6 * x16)) + ((x8 * x14) + ((x10 * x12) + ((x12 * x10) + ((x14 * x8) + ((0x2 * (x16 * x6)) + ((x18 * x4) + (x17 * x2))))))))));
- uint128_t x20 = (((x2 * x18) + ((0x2 * (x4 * x16)) + ((0x2 * (x6 * x14)) + ((x8 * x12) + ((0x2 * (x10 * x10)) + ((x12 * x8) + ((0x2 * (x14 * x6)) + ((0x2 * (x16 * x4)) + (x18 * x2))))))))) + ((uint128_t)(Const 4294968273) * (0x2 * (x17 * x17))));
- uint128_t x21 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)(Const 4294968273) * ((x18 * x17) + (x17 * x18))));
- uint128_t x22 = (((x2 * x14) + ((x4 * x12) + ((0x2 * (x6 * x10)) + ((x8 * x8) + ((0x2 * (x10 * x6)) + ((x12 * x4) + (x14 * x2))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x16 * x17)) + ((x18 * x18) + (0x2 * (x17 * x16))))));
- uint128_t x23 = (((x2 * x12) + ((0x2 * (x4 * x10)) + ((0x2 * (x6 * x8)) + ((0x2 * (x8 * x6)) + ((0x2 * (x10 * x4)) + (x12 * x2)))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x14 * x17)) + ((0x2 * (x16 * x18)) + ((0x2 * (x18 * x16)) + (0x2 * (x17 * x14)))))));
- uint128_t x24 = (((x2 * x10) + ((x4 * x8) + ((0x2 * (x6 * x6)) + ((x8 * x4) + (x10 * x2))))) + ((uint128_t)(Const 4294968273) * ((x12 * x17) + ((x14 * x18) + ((0x2 * (x16 * x16)) + ((x18 * x14) + (x17 * x12)))))));
- uint128_t x25 = (((x2 * x8) + ((0x2 * (x4 * x6)) + ((0x2 * (x6 * x4)) + (x8 * x2)))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x10 * x17)) + ((x12 * x18) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + ((x18 * x12) + (0x2 * (x17 * x10)))))))));
- uint128_t x26 = (((x2 * x6) + ((x4 * x4) + (x6 * x2))) + ((uint128_t)(Const 4294968273) * ((x8 * x17) + ((x10 * x18) + ((x12 * x16) + ((x14 * x14) + ((x16 * x12) + ((x18 * x10) + (x17 * x8)))))))));
- uint128_t x27 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)(Const 4294968273) * ((0x2 * (x6 * x17)) + ((x8 * x18) + ((0x2 * (x10 * x16)) + ((x12 * x14) + ((x14 * x12) + ((0x2 * (x16 * x10)) + ((x18 * x8) + (0x2 * (x17 * x6)))))))))));
- uint128_t x28 = ((x2 * x2) + ((uint128_t)(Const 4294968273) * ((0x2 * (x4 * x17)) + ((0x2 * (x6 * x18)) + ((0x2 * (x8 * x16)) + ((0x2 * (x10 * x14)) + ((x12 * x12) + ((0x2 * (x14 * x10)) + ((0x2 * (x16 * x8)) + ((0x2 * (x18 * x6)) + (0x2 * (x17 * x4))))))))))));
+ uint128_t x20 = (((x2 * x18) + ((0x2 * (x4 * x16)) + ((0x2 * (x6 * x14)) + ((x8 * x12) + ((0x2 * (x10 * x10)) + ((x12 * x8) + ((0x2 * (x14 * x6)) + ((0x2 * (x16 * x4)) + (x18 * x2))))))))) + ((uint128_t)0x1000003d1 * (0x2 * (x17 * x17))));
+ uint128_t x21 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)0x1000003d1 * ((x18 * x17) + (x17 * x18))));
+ uint128_t x22 = (((x2 * x14) + ((x4 * x12) + ((0x2 * (x6 * x10)) + ((x8 * x8) + ((0x2 * (x10 * x6)) + ((x12 * x4) + (x14 * x2))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x16 * x17)) + ((x18 * x18) + (0x2 * (x17 * x16))))));
+ uint128_t x23 = (((x2 * x12) + ((0x2 * (x4 * x10)) + ((0x2 * (x6 * x8)) + ((0x2 * (x8 * x6)) + ((0x2 * (x10 * x4)) + (x12 * x2)))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x14 * x17)) + ((0x2 * (x16 * x18)) + ((0x2 * (x18 * x16)) + (0x2 * (x17 * x14)))))));
+ uint128_t x24 = (((x2 * x10) + ((x4 * x8) + ((0x2 * (x6 * x6)) + ((x8 * x4) + (x10 * x2))))) + ((uint128_t)0x1000003d1 * ((x12 * x17) + ((x14 * x18) + ((0x2 * (x16 * x16)) + ((x18 * x14) + (x17 * x12)))))));
+ uint128_t x25 = (((x2 * x8) + ((0x2 * (x4 * x6)) + ((0x2 * (x6 * x4)) + (x8 * x2)))) + ((uint128_t)0x1000003d1 * ((0x2 * (x10 * x17)) + ((x12 * x18) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + ((x18 * x12) + (0x2 * (x17 * x10)))))))));
+ uint128_t x26 = (((x2 * x6) + ((x4 * x4) + (x6 * x2))) + ((uint128_t)0x1000003d1 * ((x8 * x17) + ((x10 * x18) + ((x12 * x16) + ((x14 * x14) + ((x16 * x12) + ((x18 * x10) + (x17 * x8)))))))));
+ uint128_t x27 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)0x1000003d1 * ((0x2 * (x6 * x17)) + ((x8 * x18) + ((0x2 * (x10 * x16)) + ((x12 * x14) + ((x14 * x12) + ((0x2 * (x16 * x10)) + ((x18 * x8) + (0x2 * (x17 * x6)))))))))));
+ uint128_t x28 = ((x2 * x2) + ((uint128_t)0x1000003d1 * ((0x2 * (x4 * x17)) + ((0x2 * (x6 * x18)) + ((0x2 * (x8 * x16)) + ((0x2 * (x10 * x14)) + ((x12 * x12) + ((0x2 * (x14 * x10)) + ((0x2 * (x16 * x8)) + ((0x2 * (x18 * x6)) + (0x2 * (x17 * x4))))))))))));
uint128_t x29 = (x28 >> 0x1a);
uint64_t x30 = ((uint64_t)x28 & 0x3ffffff);
uint128_t x31 = (x29 + x27);
@@ -41,7 +41,7 @@ Interp-η
uint64_t x55 = (x53 + x19);
uint64_t x56 = (x55 >> 0x19);
uint64_t x57 = (x55 & 0x1ffffff);
- uint128_t x58 = (x30 + ((uint128_t)(Const 4294968273) * x56));
+ uint128_t x58 = (x30 + ((uint128_t)0x1000003d1 * x56));
uint64_t x59 = (uint64_t) (x58 >> 0x1a);
uint64_t x60 = ((uint64_t)x58 & 0x3ffffff);
uint64_t x61 = (x59 + x33);
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesub.c b/src/Specific/solinas64_2e256m4294968273_10limbs/fesub.c
index 6d65af5ed..47fd8e81c 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/fesub.c
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesub.c
@@ -19,8 +19,8 @@ static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[1
{ const uint64_t x27 = in2[2];
{ const uint64_t x25 = in2[1];
{ const uint64_t x23 = in2[0];
- out[0] = ((Const 134215774 + x5) - x23);
- out[1] = ((Const 134217598 + x7) - x25);
+ out[0] = ((0x7fff85e + x5) - x23);
+ out[1] = ((0x7ffff7e + x7) - x25);
out[2] = ((0x3fffffe + x9) - x27);
out[3] = ((0x7fffffe + x11) - x29);
out[4] = ((0x3fffffe + x13) - x31);
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.log b/src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.log
index 0d8f8ff9f..e3b338c3c 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x3fffffe + x20) - x38), ((0x7fffffe + x21) - x39), ((0x3fffffe + x19) - x37), ((0x7fffffe + x17) - x35), ((0x7fffffe + x15) - x33), ((0x3fffffe + x13) - x31), ((0x7fffffe + x11) - x29), ((0x3fffffe + x9) - x27), ((Const 134217598 + x7) - x25), ((Const 134215774 + x5) - x23)))
+ (((0x3fffffe + x20) - x38), ((0x7fffffe + x21) - x39), ((0x3fffffe + x19) - x37), ((0x7fffffe + x17) - x35), ((0x7fffffe + x15) - x33), ((0x3fffffe + x13) - x31), ((0x7fffffe + x11) - x29), ((0x3fffffe + x9) - x27), ((0x7ffff7e + x7) - x25), ((0x7fff85e + x5) - x23)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/freeze.c b/src/Specific/solinas64_2e256m4294968273_10limbs/freeze.c
index e54c5cace..d5234c2a8 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/freeze.c
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/freeze.c
@@ -9,8 +9,8 @@ static void freeze(uint64_t out[10], const uint64_t in1[10]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 67107887);
- { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, Const 67108799);
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffc2f);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x3ffffbf);
{ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffff);
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x3ffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x1ffffff);
@@ -20,9 +20,9 @@ static void freeze(uint64_t out[10], const uint64_t in1[10]) {
{ uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x3ffffff);
{ uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffff);
{ uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & Const 67107887);
+ { uint64_t x50 = (x49 & 0x3fffc2f);
{ uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint64_t x54 = (x49 & Const 67108799);
+ { uint64_t x54 = (x49 & 0x3ffffbf);
{ uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
{ uint64_t x58 = (x49 & 0x1ffffff);
{ uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.log
index 1d0b3c646..db98ea96f 100644
--- a/src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.log
@@ -2,8 +2,8 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 67107887);
- uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, Const 67108799);
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffc2f);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x3ffffbf);
uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffff);
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x3ffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x1ffffff);
@@ -13,9 +13,9 @@ Interp-η
uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x3ffffff);
uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffff);
uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & Const 67107887);
+ uint64_t x50 = (x49 & 0x3fffc2f);
uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint64_t x54 = (x49 & Const 67108799);
+ uint64_t x54 = (x49 & 0x3ffffbf);
uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
uint64_t x58 = (x49 & 0x1ffffff);
uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/femul.c b/src/Specific/solinas64_2e256m4294968273_9limbs/femul.c
index c41934799..8ce77a639 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/femul.c
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/femul.c
@@ -18,14 +18,14 @@ static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9])
{ const uint64_t x23 = in2[1];
{ const uint64_t x21 = in2[0];
{ uint128_t x36 = ((uint128_t)(x5 * x34) + ((0x2 * (x7 * x35)) + ((x9 * x33) + ((0x2 * (x11 * x31)) + ((x13 * x29) + ((0x2 * (x15 * x27)) + ((x17 * x25) + ((0x2 * (x19 * x23)) + (x18 * x21)))))))));
- { uint128_t x37 = (((x5 * x35) + ((x7 * x33) + ((x9 * x31) + ((x11 * x29) + ((x13 * x27) + ((x15 * x25) + ((x17 * x23) + (x19 * x21)))))))) + ((uint128_t)(Const 4294968273) * (x18 * x34)));
- { uint128_t x38 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((x9 * x29) + ((0x2 * (x11 * x27)) + ((x13 * x25) + ((0x2 * (x15 * x23)) + (x17 * x21))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x19 * x34)) + (0x2 * (x18 * x35)))));
- { uint128_t x39 = (((x5 * x31) + ((x7 * x29) + ((x9 * x27) + ((x11 * x25) + ((x13 * x23) + (x15 * x21)))))) + ((uint128_t)(Const 4294968273) * ((x17 * x34) + ((0x2 * (x19 * x35)) + (x18 * x33)))));
- { uint128_t x40 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((x9 * x25) + ((0x2 * (x11 * x23)) + (x13 * x21))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x15 * x34)) + ((0x2 * (x17 * x35)) + ((0x2 * (x19 * x33)) + (0x2 * (x18 * x31)))))));
- { uint128_t x41 = (((x5 * x27) + ((x7 * x25) + ((x9 * x23) + (x11 * x21)))) + ((uint128_t)(Const 4294968273) * ((x13 * x34) + ((0x2 * (x15 * x35)) + ((x17 * x33) + ((0x2 * (x19 * x31)) + (x18 * x29)))))));
- { uint128_t x42 = (((x5 * x25) + ((0x2 * (x7 * x23)) + (x9 * x21))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x11 * x34)) + ((0x2 * (x13 * x35)) + ((0x2 * (x15 * x33)) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + (0x2 * (x18 * x27)))))))));
- { uint128_t x43 = (((x5 * x23) + (x7 * x21)) + ((uint128_t)(Const 4294968273) * ((x9 * x34) + ((0x2 * (x11 * x35)) + ((x13 * x33) + ((0x2 * (x15 * x31)) + ((x17 * x29) + ((0x2 * (x19 * x27)) + (x18 * x25)))))))));
- { uint128_t x44 = ((x5 * x21) + (Const 4294968273 * ((0x2 * (x7 * x34)) + ((uint128_t)(0x2 * (x9 * x35)) + ((0x2 * (x11 * x33)) + ((0x2 * (x13 * x31)) + ((0x2 * (x15 * x29)) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (0x2 * (x18 * x23)))))))))));
+ { uint128_t x37 = (((x5 * x35) + ((x7 * x33) + ((x9 * x31) + ((x11 * x29) + ((x13 * x27) + ((x15 * x25) + ((x17 * x23) + (x19 * x21)))))))) + ((uint128_t)0x1000003d1 * (x18 * x34)));
+ { uint128_t x38 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((x9 * x29) + ((0x2 * (x11 * x27)) + ((x13 * x25) + ((0x2 * (x15 * x23)) + (x17 * x21))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x19 * x34)) + (0x2 * (x18 * x35)))));
+ { uint128_t x39 = (((x5 * x31) + ((x7 * x29) + ((x9 * x27) + ((x11 * x25) + ((x13 * x23) + (x15 * x21)))))) + ((uint128_t)0x1000003d1 * ((x17 * x34) + ((0x2 * (x19 * x35)) + (x18 * x33)))));
+ { uint128_t x40 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((x9 * x25) + ((0x2 * (x11 * x23)) + (x13 * x21))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x15 * x34)) + ((0x2 * (x17 * x35)) + ((0x2 * (x19 * x33)) + (0x2 * (x18 * x31)))))));
+ { uint128_t x41 = (((x5 * x27) + ((x7 * x25) + ((x9 * x23) + (x11 * x21)))) + ((uint128_t)0x1000003d1 * ((x13 * x34) + ((0x2 * (x15 * x35)) + ((x17 * x33) + ((0x2 * (x19 * x31)) + (x18 * x29)))))));
+ { uint128_t x42 = (((x5 * x25) + ((0x2 * (x7 * x23)) + (x9 * x21))) + ((uint128_t)0x1000003d1 * ((0x2 * (x11 * x34)) + ((0x2 * (x13 * x35)) + ((0x2 * (x15 * x33)) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + (0x2 * (x18 * x27)))))))));
+ { uint128_t x43 = (((x5 * x23) + (x7 * x21)) + ((uint128_t)0x1000003d1 * ((x9 * x34) + ((0x2 * (x11 * x35)) + ((x13 * x33) + ((0x2 * (x15 * x31)) + ((x17 * x29) + ((0x2 * (x19 * x27)) + (x18 * x25)))))))));
+ { uint128_t x44 = ((x5 * x21) + (0x1000003d1 * ((0x2 * (x7 * x34)) + ((uint128_t)(0x2 * (x9 * x35)) + ((0x2 * (x11 * x33)) + ((0x2 * (x13 * x31)) + ((0x2 * (x15 * x29)) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (0x2 * (x18 * x23)))))))))));
{ uint128_t x45 = (x44 >> 0x1d);
{ uint64_t x46 = ((uint64_t)x44 & 0x1fffffff);
{ uint128_t x47 = (x45 + x43);
@@ -52,7 +52,7 @@ static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9])
{ uint128_t x68 = (x66 + x36);
{ uint64_t x69 = (uint64_t) (x68 >> 0x1c);
{ uint64_t x70 = ((uint64_t)x68 & 0xfffffff);
- { uint128_t x71 = (x46 + ((uint128_t)(Const 4294968273) * x69));
+ { uint128_t x71 = (x46 + ((uint128_t)0x1000003d1 * x69));
{ uint64_t x72 = (uint64_t) (x71 >> 0x1d);
{ uint64_t x73 = ((uint64_t)x71 & 0x1fffffff);
{ uint64_t x74 = (x72 + x49);
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.log b/src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.log
index 58c383edc..f02f770e8 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.log
@@ -3,14 +3,14 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
uint128_t x36 = ((uint128_t)(x5 * x34) + ((0x2 * (x7 * x35)) + ((x9 * x33) + ((0x2 * (x11 * x31)) + ((x13 * x29) + ((0x2 * (x15 * x27)) + ((x17 * x25) + ((0x2 * (x19 * x23)) + (x18 * x21)))))))));
- uint128_t x37 = (((x5 * x35) + ((x7 * x33) + ((x9 * x31) + ((x11 * x29) + ((x13 * x27) + ((x15 * x25) + ((x17 * x23) + (x19 * x21)))))))) + ((uint128_t)(Const 4294968273) * (x18 * x34)));
- uint128_t x38 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((x9 * x29) + ((0x2 * (x11 * x27)) + ((x13 * x25) + ((0x2 * (x15 * x23)) + (x17 * x21))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x19 * x34)) + (0x2 * (x18 * x35)))));
- uint128_t x39 = (((x5 * x31) + ((x7 * x29) + ((x9 * x27) + ((x11 * x25) + ((x13 * x23) + (x15 * x21)))))) + ((uint128_t)(Const 4294968273) * ((x17 * x34) + ((0x2 * (x19 * x35)) + (x18 * x33)))));
- uint128_t x40 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((x9 * x25) + ((0x2 * (x11 * x23)) + (x13 * x21))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x15 * x34)) + ((0x2 * (x17 * x35)) + ((0x2 * (x19 * x33)) + (0x2 * (x18 * x31)))))));
- uint128_t x41 = (((x5 * x27) + ((x7 * x25) + ((x9 * x23) + (x11 * x21)))) + ((uint128_t)(Const 4294968273) * ((x13 * x34) + ((0x2 * (x15 * x35)) + ((x17 * x33) + ((0x2 * (x19 * x31)) + (x18 * x29)))))));
- uint128_t x42 = (((x5 * x25) + ((0x2 * (x7 * x23)) + (x9 * x21))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x11 * x34)) + ((0x2 * (x13 * x35)) + ((0x2 * (x15 * x33)) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + (0x2 * (x18 * x27)))))))));
- uint128_t x43 = (((x5 * x23) + (x7 * x21)) + ((uint128_t)(Const 4294968273) * ((x9 * x34) + ((0x2 * (x11 * x35)) + ((x13 * x33) + ((0x2 * (x15 * x31)) + ((x17 * x29) + ((0x2 * (x19 * x27)) + (x18 * x25)))))))));
- uint128_t x44 = ((x5 * x21) + (Const 4294968273 * ((0x2 * (x7 * x34)) + ((uint128_t)(0x2 * (x9 * x35)) + ((0x2 * (x11 * x33)) + ((0x2 * (x13 * x31)) + ((0x2 * (x15 * x29)) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (0x2 * (x18 * x23)))))))))));
+ uint128_t x37 = (((x5 * x35) + ((x7 * x33) + ((x9 * x31) + ((x11 * x29) + ((x13 * x27) + ((x15 * x25) + ((x17 * x23) + (x19 * x21)))))))) + ((uint128_t)0x1000003d1 * (x18 * x34)));
+ uint128_t x38 = (((x5 * x33) + ((0x2 * (x7 * x31)) + ((x9 * x29) + ((0x2 * (x11 * x27)) + ((x13 * x25) + ((0x2 * (x15 * x23)) + (x17 * x21))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x19 * x34)) + (0x2 * (x18 * x35)))));
+ uint128_t x39 = (((x5 * x31) + ((x7 * x29) + ((x9 * x27) + ((x11 * x25) + ((x13 * x23) + (x15 * x21)))))) + ((uint128_t)0x1000003d1 * ((x17 * x34) + ((0x2 * (x19 * x35)) + (x18 * x33)))));
+ uint128_t x40 = (((x5 * x29) + ((0x2 * (x7 * x27)) + ((x9 * x25) + ((0x2 * (x11 * x23)) + (x13 * x21))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x15 * x34)) + ((0x2 * (x17 * x35)) + ((0x2 * (x19 * x33)) + (0x2 * (x18 * x31)))))));
+ uint128_t x41 = (((x5 * x27) + ((x7 * x25) + ((x9 * x23) + (x11 * x21)))) + ((uint128_t)0x1000003d1 * ((x13 * x34) + ((0x2 * (x15 * x35)) + ((x17 * x33) + ((0x2 * (x19 * x31)) + (x18 * x29)))))));
+ uint128_t x42 = (((x5 * x25) + ((0x2 * (x7 * x23)) + (x9 * x21))) + ((uint128_t)0x1000003d1 * ((0x2 * (x11 * x34)) + ((0x2 * (x13 * x35)) + ((0x2 * (x15 * x33)) + ((0x2 * (x17 * x31)) + ((0x2 * (x19 * x29)) + (0x2 * (x18 * x27)))))))));
+ uint128_t x43 = (((x5 * x23) + (x7 * x21)) + ((uint128_t)0x1000003d1 * ((x9 * x34) + ((0x2 * (x11 * x35)) + ((x13 * x33) + ((0x2 * (x15 * x31)) + ((x17 * x29) + ((0x2 * (x19 * x27)) + (x18 * x25)))))))));
+ uint128_t x44 = ((x5 * x21) + (0x1000003d1 * ((0x2 * (x7 * x34)) + ((uint128_t)(0x2 * (x9 * x35)) + ((0x2 * (x11 * x33)) + ((0x2 * (x13 * x31)) + ((0x2 * (x15 * x29)) + ((0x2 * (x17 * x27)) + ((0x2 * (x19 * x25)) + (0x2 * (x18 * x23)))))))))));
uint128_t x45 = (x44 >> 0x1d);
uint64_t x46 = ((uint64_t)x44 & 0x1fffffff);
uint128_t x47 = (x45 + x43);
@@ -37,7 +37,7 @@ Interp-η
uint128_t x68 = (x66 + x36);
uint64_t x69 = (uint64_t) (x68 >> 0x1c);
uint64_t x70 = ((uint64_t)x68 & 0xfffffff);
- uint128_t x71 = (x46 + ((uint128_t)(Const 4294968273) * x69));
+ uint128_t x71 = (x46 + ((uint128_t)0x1000003d1 * x69));
uint64_t x72 = (uint64_t) (x71 >> 0x1d);
uint64_t x73 = ((uint64_t)x71 & 0x1fffffff);
uint64_t x74 = (x72 + x49);
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.c b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.c
index 80d0d2665..4c2d3917c 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.c
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.c
@@ -9,14 +9,14 @@ static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
{ uint128_t x17 = ((uint128_t)(x2 * x15) + ((0x2 * (x4 * x16)) + ((x6 * x14) + ((0x2 * (x8 * x12)) + ((x10 * x10) + ((0x2 * (x12 * x8)) + ((x14 * x6) + ((0x2 * (x16 * x4)) + (x15 * x2)))))))));
- { uint128_t x18 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)(Const 4294968273) * (x15 * x15)));
- { uint128_t x19 = (((x2 * x14) + ((0x2 * (x4 * x12)) + ((x6 * x10) + ((0x2 * (x8 * x8)) + ((x10 * x6) + ((0x2 * (x12 * x4)) + (x14 * x2))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x16 * x15)) + (0x2 * (x15 * x16)))));
- { uint128_t x20 = (((x2 * x12) + ((x4 * x10) + ((x6 * x8) + ((x8 * x6) + ((x10 * x4) + (x12 * x2)))))) + ((uint128_t)(Const 4294968273) * ((x14 * x15) + ((0x2 * (x16 * x16)) + (x15 * x14)))));
- { uint128_t x21 = (((x2 * x10) + ((0x2 * (x4 * x8)) + ((x6 * x6) + ((0x2 * (x8 * x4)) + (x10 * x2))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x12 * x15)) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + (0x2 * (x15 * x12)))))));
- { uint128_t x22 = (((x2 * x8) + ((x4 * x6) + ((x6 * x4) + (x8 * x2)))) + ((uint128_t)(Const 4294968273) * ((x10 * x15) + ((0x2 * (x12 * x16)) + ((x14 * x14) + ((0x2 * (x16 * x12)) + (x15 * x10)))))));
- { uint128_t x23 = (((x2 * x6) + ((0x2 * (x4 * x4)) + (x6 * x2))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x8 * x15)) + ((0x2 * (x10 * x16)) + ((0x2 * (x12 * x14)) + ((0x2 * (x14 * x12)) + ((0x2 * (x16 * x10)) + (0x2 * (x15 * x8)))))))));
- { uint128_t x24 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)(Const 4294968273) * ((x6 * x15) + ((0x2 * (x8 * x16)) + ((x10 * x14) + ((0x2 * (x12 * x12)) + ((x14 * x10) + ((0x2 * (x16 * x8)) + (x15 * x6)))))))));
- { uint128_t x25 = ((x2 * x2) + (Const 4294968273 * ((0x2 * (x4 * x15)) + ((uint128_t)(0x2 * (x6 * x16)) + ((0x2 * (x8 * x14)) + ((0x2 * (x10 * x12)) + ((0x2 * (x12 * x10)) + ((0x2 * (x14 * x8)) + ((0x2 * (x16 * x6)) + (0x2 * (x15 * x4)))))))))));
+ { uint128_t x18 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)0x1000003d1 * (x15 * x15)));
+ { uint128_t x19 = (((x2 * x14) + ((0x2 * (x4 * x12)) + ((x6 * x10) + ((0x2 * (x8 * x8)) + ((x10 * x6) + ((0x2 * (x12 * x4)) + (x14 * x2))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x16 * x15)) + (0x2 * (x15 * x16)))));
+ { uint128_t x20 = (((x2 * x12) + ((x4 * x10) + ((x6 * x8) + ((x8 * x6) + ((x10 * x4) + (x12 * x2)))))) + ((uint128_t)0x1000003d1 * ((x14 * x15) + ((0x2 * (x16 * x16)) + (x15 * x14)))));
+ { uint128_t x21 = (((x2 * x10) + ((0x2 * (x4 * x8)) + ((x6 * x6) + ((0x2 * (x8 * x4)) + (x10 * x2))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x12 * x15)) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + (0x2 * (x15 * x12)))))));
+ { uint128_t x22 = (((x2 * x8) + ((x4 * x6) + ((x6 * x4) + (x8 * x2)))) + ((uint128_t)0x1000003d1 * ((x10 * x15) + ((0x2 * (x12 * x16)) + ((x14 * x14) + ((0x2 * (x16 * x12)) + (x15 * x10)))))));
+ { uint128_t x23 = (((x2 * x6) + ((0x2 * (x4 * x4)) + (x6 * x2))) + ((uint128_t)0x1000003d1 * ((0x2 * (x8 * x15)) + ((0x2 * (x10 * x16)) + ((0x2 * (x12 * x14)) + ((0x2 * (x14 * x12)) + ((0x2 * (x16 * x10)) + (0x2 * (x15 * x8)))))))));
+ { uint128_t x24 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)0x1000003d1 * ((x6 * x15) + ((0x2 * (x8 * x16)) + ((x10 * x14) + ((0x2 * (x12 * x12)) + ((x14 * x10) + ((0x2 * (x16 * x8)) + (x15 * x6)))))))));
+ { uint128_t x25 = ((x2 * x2) + (0x1000003d1 * ((0x2 * (x4 * x15)) + ((uint128_t)(0x2 * (x6 * x16)) + ((0x2 * (x8 * x14)) + ((0x2 * (x10 * x12)) + ((0x2 * (x12 * x10)) + ((0x2 * (x14 * x8)) + ((0x2 * (x16 * x6)) + (0x2 * (x15 * x4)))))))))));
{ uint128_t x26 = (x25 >> 0x1d);
{ uint64_t x27 = ((uint64_t)x25 & 0x1fffffff);
{ uint128_t x28 = (x26 + x24);
@@ -43,7 +43,7 @@ static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
{ uint128_t x49 = (x47 + x17);
{ uint64_t x50 = (uint64_t) (x49 >> 0x1c);
{ uint64_t x51 = ((uint64_t)x49 & 0xfffffff);
- { uint128_t x52 = (x27 + ((uint128_t)(Const 4294968273) * x50));
+ { uint128_t x52 = (x27 + ((uint128_t)0x1000003d1 * x50));
{ uint64_t x53 = (uint64_t) (x52 >> 0x1d);
{ uint64_t x54 = ((uint64_t)x52 & 0x1fffffff);
{ uint64_t x55 = (x53 + x30);
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.log b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.log
index fe0537158..cbf6a50da 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.log
@@ -3,14 +3,14 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
uint128_t x17 = ((uint128_t)(x2 * x15) + ((0x2 * (x4 * x16)) + ((x6 * x14) + ((0x2 * (x8 * x12)) + ((x10 * x10) + ((0x2 * (x12 * x8)) + ((x14 * x6) + ((0x2 * (x16 * x4)) + (x15 * x2)))))))));
- uint128_t x18 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)(Const 4294968273) * (x15 * x15)));
- uint128_t x19 = (((x2 * x14) + ((0x2 * (x4 * x12)) + ((x6 * x10) + ((0x2 * (x8 * x8)) + ((x10 * x6) + ((0x2 * (x12 * x4)) + (x14 * x2))))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x16 * x15)) + (0x2 * (x15 * x16)))));
- uint128_t x20 = (((x2 * x12) + ((x4 * x10) + ((x6 * x8) + ((x8 * x6) + ((x10 * x4) + (x12 * x2)))))) + ((uint128_t)(Const 4294968273) * ((x14 * x15) + ((0x2 * (x16 * x16)) + (x15 * x14)))));
- uint128_t x21 = (((x2 * x10) + ((0x2 * (x4 * x8)) + ((x6 * x6) + ((0x2 * (x8 * x4)) + (x10 * x2))))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x12 * x15)) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + (0x2 * (x15 * x12)))))));
- uint128_t x22 = (((x2 * x8) + ((x4 * x6) + ((x6 * x4) + (x8 * x2)))) + ((uint128_t)(Const 4294968273) * ((x10 * x15) + ((0x2 * (x12 * x16)) + ((x14 * x14) + ((0x2 * (x16 * x12)) + (x15 * x10)))))));
- uint128_t x23 = (((x2 * x6) + ((0x2 * (x4 * x4)) + (x6 * x2))) + ((uint128_t)(Const 4294968273) * ((0x2 * (x8 * x15)) + ((0x2 * (x10 * x16)) + ((0x2 * (x12 * x14)) + ((0x2 * (x14 * x12)) + ((0x2 * (x16 * x10)) + (0x2 * (x15 * x8)))))))));
- uint128_t x24 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)(Const 4294968273) * ((x6 * x15) + ((0x2 * (x8 * x16)) + ((x10 * x14) + ((0x2 * (x12 * x12)) + ((x14 * x10) + ((0x2 * (x16 * x8)) + (x15 * x6)))))))));
- uint128_t x25 = ((x2 * x2) + (Const 4294968273 * ((0x2 * (x4 * x15)) + ((uint128_t)(0x2 * (x6 * x16)) + ((0x2 * (x8 * x14)) + ((0x2 * (x10 * x12)) + ((0x2 * (x12 * x10)) + ((0x2 * (x14 * x8)) + ((0x2 * (x16 * x6)) + (0x2 * (x15 * x4)))))))))));
+ uint128_t x18 = (((x2 * x16) + ((x4 * x14) + ((x6 * x12) + ((x8 * x10) + ((x10 * x8) + ((x12 * x6) + ((x14 * x4) + (x16 * x2)))))))) + ((uint128_t)0x1000003d1 * (x15 * x15)));
+ uint128_t x19 = (((x2 * x14) + ((0x2 * (x4 * x12)) + ((x6 * x10) + ((0x2 * (x8 * x8)) + ((x10 * x6) + ((0x2 * (x12 * x4)) + (x14 * x2))))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x16 * x15)) + (0x2 * (x15 * x16)))));
+ uint128_t x20 = (((x2 * x12) + ((x4 * x10) + ((x6 * x8) + ((x8 * x6) + ((x10 * x4) + (x12 * x2)))))) + ((uint128_t)0x1000003d1 * ((x14 * x15) + ((0x2 * (x16 * x16)) + (x15 * x14)))));
+ uint128_t x21 = (((x2 * x10) + ((0x2 * (x4 * x8)) + ((x6 * x6) + ((0x2 * (x8 * x4)) + (x10 * x2))))) + ((uint128_t)0x1000003d1 * ((0x2 * (x12 * x15)) + ((0x2 * (x14 * x16)) + ((0x2 * (x16 * x14)) + (0x2 * (x15 * x12)))))));
+ uint128_t x22 = (((x2 * x8) + ((x4 * x6) + ((x6 * x4) + (x8 * x2)))) + ((uint128_t)0x1000003d1 * ((x10 * x15) + ((0x2 * (x12 * x16)) + ((x14 * x14) + ((0x2 * (x16 * x12)) + (x15 * x10)))))));
+ uint128_t x23 = (((x2 * x6) + ((0x2 * (x4 * x4)) + (x6 * x2))) + ((uint128_t)0x1000003d1 * ((0x2 * (x8 * x15)) + ((0x2 * (x10 * x16)) + ((0x2 * (x12 * x14)) + ((0x2 * (x14 * x12)) + ((0x2 * (x16 * x10)) + (0x2 * (x15 * x8)))))))));
+ uint128_t x24 = (((x2 * x4) + (x4 * x2)) + ((uint128_t)0x1000003d1 * ((x6 * x15) + ((0x2 * (x8 * x16)) + ((x10 * x14) + ((0x2 * (x12 * x12)) + ((x14 * x10) + ((0x2 * (x16 * x8)) + (x15 * x6)))))))));
+ uint128_t x25 = ((x2 * x2) + (0x1000003d1 * ((0x2 * (x4 * x15)) + ((uint128_t)(0x2 * (x6 * x16)) + ((0x2 * (x8 * x14)) + ((0x2 * (x10 * x12)) + ((0x2 * (x12 * x10)) + ((0x2 * (x14 * x8)) + ((0x2 * (x16 * x6)) + (0x2 * (x15 * x4)))))))))));
uint128_t x26 = (x25 >> 0x1d);
uint64_t x27 = ((uint64_t)x25 & 0x1fffffff);
uint128_t x28 = (x26 + x24);
@@ -37,7 +37,7 @@ Interp-η
uint128_t x49 = (x47 + x17);
uint64_t x50 = (uint64_t) (x49 >> 0x1c);
uint64_t x51 = ((uint64_t)x49 & 0xfffffff);
- uint128_t x52 = (x27 + ((uint128_t)(Const 4294968273) * x50));
+ uint128_t x52 = (x27 + ((uint128_t)0x1000003d1 * x50));
uint64_t x53 = (uint64_t) (x52 >> 0x1d);
uint64_t x54 = ((uint64_t)x52 & 0x1fffffff);
uint64_t x55 = (x53 + x30);
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesub.c b/src/Specific/solinas64_2e256m4294968273_9limbs/fesub.c
index 9646ee248..eb56d8eea 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/fesub.c
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesub.c
@@ -17,8 +17,8 @@ static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9])
{ const uint64_t x25 = in2[2];
{ const uint64_t x23 = in2[1];
{ const uint64_t x21 = in2[0];
- out[0] = ((Const 1073739870 + x5) - x21);
- out[1] = ((Const 536870894 + x7) - x23);
+ out[0] = ((0x3ffff85e + x5) - x21);
+ out[1] = ((0x1fffffee + x7) - x23);
out[2] = ((0x3ffffffe + x9) - x25);
out[3] = ((0x1ffffffe + x11) - x27);
out[4] = ((0x3ffffffe + x13) - x29);
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.log b/src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.log
index 7f47b325c..ce9b26884 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x1ffffffe + x18) - x34), ((0x1ffffffe + x19) - x35), ((0x3ffffffe + x17) - x33), ((0x1ffffffe + x15) - x31), ((0x3ffffffe + x13) - x29), ((0x1ffffffe + x11) - x27), ((0x3ffffffe + x9) - x25), ((Const 536870894 + x7) - x23), ((Const 1073739870 + x5) - x21)))
+ (((0x1ffffffe + x18) - x34), ((0x1ffffffe + x19) - x35), ((0x3ffffffe + x17) - x33), ((0x1ffffffe + x15) - x31), ((0x3ffffffe + x13) - x29), ((0x1ffffffe + x11) - x27), ((0x3ffffffe + x9) - x25), ((0x1fffffee + x7) - x23), ((0x3ffff85e + x5) - x21)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/freeze.c b/src/Specific/solinas64_2e256m4294968273_9limbs/freeze.c
index 0ea1b696d..e04be709f 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/freeze.c
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/freeze.c
@@ -8,8 +8,8 @@ static void freeze(uint64_t out[9], const uint64_t in1[9]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 536869935);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, Const 268435447);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffc2f);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0xffffff7);
{ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x1fffffff);
{ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0xfffffff);
{ uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x1fffffff);
@@ -18,9 +18,9 @@ static void freeze(uint64_t out[9], const uint64_t in1[9]) {
{ uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0xfffffff);
{ uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0xfffffff);
{ uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- { uint64_t x45 = (x44 & Const 536869935);
+ { uint64_t x45 = (x44 & 0x1ffffc2f);
{ uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint64_t x49 = (x44 & Const 268435447);
+ { uint64_t x49 = (x44 & 0xffffff7);
{ uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
{ uint64_t x53 = (x44 & 0x1fffffff);
{ uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.log
index bef65fe8d..268475a35 100644
--- a/src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.log
@@ -2,8 +2,8 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 536869935);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, Const 268435447);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffc2f);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0xffffff7);
uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x1fffffff);
uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0xfffffff);
uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x1fffffff);
@@ -12,9 +12,9 @@ Interp-η
uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0xfffffff);
uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0xfffffff);
uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- uint64_t x45 = (x44 & Const 536869935);
+ uint64_t x45 = (x44 & 0x1ffffc2f);
uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint64_t x49 = (x44 & Const 268435447);
+ uint64_t x49 = (x44 & 0xffffff7);
uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
uint64_t x53 = (x44 & 0x1fffffff);
uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
diff --git a/src/Specific/solinas64_2e321m9_7limbs/fesub.c b/src/Specific/solinas64_2e321m9_7limbs/fesub.c
index dcc40a5cc..8e5f3926e 100644
--- a/src/Specific/solinas64_2e321m9_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e321m9_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 140737488355310 + x5) - x17);
+ out[0] = ((0x7fffffffffee + x5) - x17);
out[1] = ((0x7ffffffffffe + x7) - x19);
out[2] = ((0x7ffffffffffe + x9) - x21);
out[3] = ((0x7ffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.log
index d64b46339..7be8b0496 100644
--- a/src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x3ffffffffffe + x14) - x26), ((0x7ffffffffffe + x15) - x27), ((0x7ffffffffffe + x13) - x25), ((0x7ffffffffffe + x11) - x23), ((0x7ffffffffffe + x9) - x21), ((0x7ffffffffffe + x7) - x19), ((Const 140737488355310 + x5) - x17)))
+ (((0x3ffffffffffe + x14) - x26), ((0x7ffffffffffe + x15) - x27), ((0x7ffffffffffe + x13) - x25), ((0x7ffffffffffe + x11) - x23), ((0x7ffffffffffe + x9) - x21), ((0x7ffffffffffe + x7) - x19), ((0x7fffffffffee + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9_7limbs/freeze.c b/src/Specific/solinas64_2e321m9_7limbs/freeze.c
index 698ed9152..d2d0770d1 100644
--- a/src/Specific/solinas64_2e321m9_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e321m9_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 70368744177655);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffff7);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 70368744177655);
+ { uint64_t x35 = (x34 & 0x3ffffffffff7);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0x3fffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.log
index a90e4dba6..a164d1c4d 100644
--- a/src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 70368744177655);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffff7);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x1fffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 70368744177655);
+ uint64_t x35 = (x34 & 0x3ffffffffff7);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0x3fffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e336m17_7limbs/fesub.c b/src/Specific/solinas64_2e336m17_7limbs/fesub.c
index a62fba654..7fbb64b69 100644
--- a/src/Specific/solinas64_2e336m17_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e336m17_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 562949953421278 + x5) - x17);
+ out[0] = ((0x1ffffffffffde + x5) - x17);
out[1] = ((0x1fffffffffffe + x7) - x19);
out[2] = ((0x1fffffffffffe + x9) - x21);
out[3] = ((0x1fffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.log
index dce4b96e1..f09d1ef69 100644
--- a/src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x1fffffffffffe + x14) - x26), ((0x1fffffffffffe + x15) - x27), ((0x1fffffffffffe + x13) - x25), ((0x1fffffffffffe + x11) - x23), ((0x1fffffffffffe + x9) - x21), ((0x1fffffffffffe + x7) - x19), ((Const 562949953421278 + x5) - x17)))
+ (((0x1fffffffffffe + x14) - x26), ((0x1fffffffffffe + x15) - x27), ((0x1fffffffffffe + x13) - x25), ((0x1fffffffffffe + x11) - x23), ((0x1fffffffffffe + x9) - x21), ((0x1fffffffffffe + x7) - x19), ((0x1ffffffffffde + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3_7limbs/fesub.c b/src/Specific/solinas64_2e336m3_7limbs/fesub.c
index 3441d9392..7b5c9072a 100644
--- a/src/Specific/solinas64_2e336m3_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e336m3_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 562949953421306 + x5) - x17);
+ out[0] = ((0x1fffffffffffa + x5) - x17);
out[1] = ((0x1fffffffffffe + x7) - x19);
out[2] = ((0x1fffffffffffe + x9) - x21);
out[3] = ((0x1fffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.log
index 994d7de10..bece3bd08 100644
--- a/src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x1fffffffffffe + x14) - x26), ((0x1fffffffffffe + x15) - x27), ((0x1fffffffffffe + x13) - x25), ((0x1fffffffffffe + x11) - x23), ((0x1fffffffffffe + x9) - x21), ((0x1fffffffffffe + x7) - x19), ((Const 562949953421306 + x5) - x17)))
+ (((0x1fffffffffffe + x14) - x26), ((0x1fffffffffffe + x15) - x27), ((0x1fffffffffffe + x13) - x25), ((0x1fffffffffffe + x11) - x23), ((0x1fffffffffffe + x9) - x21), ((0x1fffffffffffe + x7) - x19), ((0x1fffffffffffa + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e369m25_7limbs/fesub.c b/src/Specific/solinas64_2e369m25_7limbs/fesub.c
index fbef2581e..10ce97879 100644
--- a/src/Specific/solinas64_2e369m25_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e369m25_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 18014398509481934 + x5) - x17);
+ out[0] = ((0x3fffffffffffce + x5) - x17);
out[1] = ((0x3ffffffffffffe + x7) - x19);
out[2] = ((0x3ffffffffffffe + x9) - x21);
out[3] = ((0x1ffffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.log
index a5a9be6db..b92f40f86 100644
--- a/src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x1ffffffffffffe + x14) - x26), ((0x3ffffffffffffe + x15) - x27), ((0x3ffffffffffffe + x13) - x25), ((0x1ffffffffffffe + x11) - x23), ((0x3ffffffffffffe + x9) - x21), ((0x3ffffffffffffe + x7) - x19), ((Const 18014398509481934 + x5) - x17)))
+ (((0x1ffffffffffffe + x14) - x26), ((0x3ffffffffffffe + x15) - x27), ((0x3ffffffffffffe + x13) - x25), ((0x1ffffffffffffe + x11) - x23), ((0x3ffffffffffffe + x9) - x21), ((0x3ffffffffffffe + x7) - x19), ((0x3fffffffffffce + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e369m25_7limbs/freeze.c b/src/Specific/solinas64_2e369m25_7limbs/freeze.c
index 1e1b38340..d023e0492 100644
--- a/src/Specific/solinas64_2e369m25_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e369m25_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 9007199254740967);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffe7);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x1fffffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x1fffffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x1fffffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 9007199254740967);
+ { uint64_t x35 = (x34 & 0x1fffffffffffe7);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0x1fffffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.log
index 2ad3c9e2c..42550a18b 100644
--- a/src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 9007199254740967);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffe7);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x1fffffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x1fffffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x1fffffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 9007199254740967);
+ uint64_t x35 = (x34 & 0x1fffffffffffe7);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0x1fffffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e382m105_7limbs/fesub.c b/src/Specific/solinas64_2e382m105_7limbs/fesub.c
index f02f1167e..9bd0ffa45 100644
--- a/src/Specific/solinas64_2e382m105_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e382m105_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 72057594037927726 + x5) - x17);
+ out[0] = ((0xffffffffffff2e + x5) - x17);
out[1] = ((0xfffffffffffffe + x7) - x19);
out[2] = ((0x7ffffffffffffe + x9) - x21);
out[3] = ((0xfffffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.log
index e9181c0bb..12f5f41b9 100644
--- a/src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0x7ffffffffffffe + x13) - x25), ((0xfffffffffffffe + x11) - x23), ((0x7ffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((Const 72057594037927726 + x5) - x17)))
+ (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0x7ffffffffffffe + x13) - x25), ((0xfffffffffffffe + x11) - x23), ((0x7ffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((0xffffffffffff2e + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e382m105_7limbs/freeze.c b/src/Specific/solinas64_2e382m105_7limbs/freeze.c
index eb4bc25e8..2c6a7a34f 100644
--- a/src/Specific/solinas64_2e382m105_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e382m105_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963863);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffff97);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 36028797018963863);
+ { uint64_t x35 = (x34 & 0x7fffffffffff97);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0x7fffffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.log
index 9def01ef2..a49a4dd93 100644
--- a/src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963863);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffff97);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 36028797018963863);
+ uint64_t x35 = (x34 & 0x7fffffffffff97);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0x7fffffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e382m105_8limbs/fesub.c b/src/Specific/solinas64_2e382m105_8limbs/fesub.c
index 2d3958ae5..c0d786c3b 100644
--- a/src/Specific/solinas64_2e382m105_8limbs/fesub.c
+++ b/src/Specific/solinas64_2e382m105_8limbs/fesub.c
@@ -15,7 +15,7 @@ static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x23 = in2[2];
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
- out[0] = ((Const 562949953421102 + x5) - x19);
+ out[0] = ((0x1ffffffffff2e + x5) - x19);
out[1] = ((0x1fffffffffffe + x7) - x21);
out[2] = ((0x1fffffffffffe + x9) - x23);
out[3] = ((0xfffffffffffe + x11) - x25);
diff --git a/src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.log b/src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.log
index 904720c34..fc6c55eb5 100644
--- a/src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0xfffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((Const 562949953421102 + x5) - x19)))
+ (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0xfffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((0x1ffffffffff2e + x5) - x19)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e382m105_8limbs/freeze.c b/src/Specific/solinas64_2e382m105_8limbs/freeze.c
index 852fb8125..809e3aab4 100644
--- a/src/Specific/solinas64_2e382m105_8limbs/freeze.c
+++ b/src/Specific/solinas64_2e382m105_8limbs/freeze.c
@@ -7,7 +7,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { 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)) (0x0, Return x2, Const 281474976710551);
+ { 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)) (0x0, Return x2, 0xffffffffff97);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
{ 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 x6, 0xffffffffffff);
{ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x7fffffffffff);
@@ -16,7 +16,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
{ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
{ uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & Const 281474976710551);
+ { uint64_t x40 = (x39 & 0xffffffffff97);
{ uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
{ uint64_t x44 = (x39 & 0xffffffffffff);
{ uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.log b/src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.log
index c87bb439f..085593b7b 100644
--- a/src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- 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)) (0x0, Return x2, Const 281474976710551);
+ 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)) (0x0, Return x2, 0xffffffffff97);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
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 x6, 0xffffffffffff);
uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x7fffffffffff);
@@ -11,7 +11,7 @@ Interp-η
uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & Const 281474976710551);
+ uint64_t x40 = (x39 & 0xffffffffff97);
uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
uint64_t x44 = (x39 & 0xffffffffffff);
uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e383m187_7limbs/fesub.c b/src/Specific/solinas64_2e383m187_7limbs/fesub.c
index 6558d7550..dba8f8e30 100644
--- a/src/Specific/solinas64_2e383m187_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e383m187_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 72057594037927562 + x5) - x17);
+ out[0] = ((0xfffffffffffe8a + x5) - x17);
out[1] = ((0xfffffffffffffe + x7) - x19);
out[2] = ((0xfffffffffffffe + x9) - x21);
out[3] = ((0x7ffffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.log
index 517e263ee..125ffca25 100644
--- a/src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0x7ffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((Const 72057594037927562 + x5) - x17)))
+ (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0x7ffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((0xfffffffffffe8a + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e383m187_7limbs/freeze.c b/src/Specific/solinas64_2e383m187_7limbs/freeze.c
index 035b5470c..fb94b90f7 100644
--- a/src/Specific/solinas64_2e383m187_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e383m187_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963781);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffff45);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 36028797018963781);
+ { uint64_t x35 = (x34 & 0x7fffffffffff45);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0x7fffffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.log
index 8c453782d..70ee7008d 100644
--- a/src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963781);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffff45);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 36028797018963781);
+ uint64_t x35 = (x34 & 0x7fffffffffff45);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0x7fffffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e383m187_8limbs/fesub.c b/src/Specific/solinas64_2e383m187_8limbs/fesub.c
index 206944379..0c04e9313 100644
--- a/src/Specific/solinas64_2e383m187_8limbs/fesub.c
+++ b/src/Specific/solinas64_2e383m187_8limbs/fesub.c
@@ -15,7 +15,7 @@ static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x23 = in2[2];
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
- out[0] = ((Const 562949953420938 + x5) - x19);
+ out[0] = ((0x1fffffffffe8a + x5) - x19);
out[1] = ((0x1fffffffffffe + x7) - x21);
out[2] = ((0x1fffffffffffe + x9) - x23);
out[3] = ((0x1fffffffffffe + x11) - x25);
diff --git a/src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.log b/src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.log
index 64e057389..ee17738c6 100644
--- a/src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((Const 562949953420938 + x5) - x19)))
+ (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((0x1fffffffffe8a + x5) - x19)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e383m187_8limbs/freeze.c b/src/Specific/solinas64_2e383m187_8limbs/freeze.c
index d84afeedf..4118fe35f 100644
--- a/src/Specific/solinas64_2e383m187_8limbs/freeze.c
+++ b/src/Specific/solinas64_2e383m187_8limbs/freeze.c
@@ -7,7 +7,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { 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)) (0x0, Return x2, Const 281474976710469);
+ { 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)) (0x0, Return x2, 0xffffffffff45);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
{ 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 x6, 0xffffffffffff);
{ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
@@ -16,7 +16,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
{ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
{ uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & Const 281474976710469);
+ { uint64_t x40 = (x39 & 0xffffffffff45);
{ uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
{ uint64_t x44 = (x39 & 0xffffffffffff);
{ uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.log b/src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.log
index 881759821..b309a3ac4 100644
--- a/src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- 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)) (0x0, Return x2, Const 281474976710469);
+ 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)) (0x0, Return x2, 0xffffffffff45);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
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 x6, 0xffffffffffff);
uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
@@ -11,7 +11,7 @@ Interp-η
uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & Const 281474976710469);
+ uint64_t x40 = (x39 & 0xffffffffff45);
uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
uint64_t x44 = (x39 & 0xffffffffffff);
uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e383m31_8limbs/fesub.c b/src/Specific/solinas64_2e383m31_8limbs/fesub.c
index 202a14303..2c0f3a6eb 100644
--- a/src/Specific/solinas64_2e383m31_8limbs/fesub.c
+++ b/src/Specific/solinas64_2e383m31_8limbs/fesub.c
@@ -15,7 +15,7 @@ static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x23 = in2[2];
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
- out[0] = ((Const 562949953421250 + x5) - x19);
+ out[0] = ((0x1ffffffffffc2 + x5) - x19);
out[1] = ((0x1fffffffffffe + x7) - x21);
out[2] = ((0x1fffffffffffe + x9) - x23);
out[3] = ((0x1fffffffffffe + x11) - x25);
diff --git a/src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.log b/src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.log
index 5cce502e4..0ef12f4cd 100644
--- a/src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((Const 562949953421250 + x5) - x19)))
+ (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((0x1ffffffffffc2 + x5) - x19)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e383m31_8limbs/freeze.c b/src/Specific/solinas64_2e383m31_8limbs/freeze.c
index 1ddc7ad14..0737617ce 100644
--- a/src/Specific/solinas64_2e383m31_8limbs/freeze.c
+++ b/src/Specific/solinas64_2e383m31_8limbs/freeze.c
@@ -7,7 +7,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { 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)) (0x0, Return x2, Const 281474976710625);
+ { 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)) (0x0, Return x2, 0xffffffffffe1);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
{ 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 x6, 0xffffffffffff);
{ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
@@ -16,7 +16,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
{ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
{ uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & Const 281474976710625);
+ { uint64_t x40 = (x39 & 0xffffffffffe1);
{ uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
{ uint64_t x44 = (x39 & 0xffffffffffff);
{ uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.log b/src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.log
index b27b27e51..aafdff64b 100644
--- a/src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- 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)) (0x0, Return x2, Const 281474976710625);
+ 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)) (0x0, Return x2, 0xffffffffffe1);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
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 x6, 0xffffffffffff);
uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
@@ -11,7 +11,7 @@ Interp-η
uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & Const 281474976710625);
+ uint64_t x40 = (x39 & 0xffffffffffe1);
uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
uint64_t x44 = (x39 & 0xffffffffffff);
uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e383m421_7limbs/femul.c b/src/Specific/solinas64_2e383m421_7limbs/femul.c
index a69525a18..bb277b002 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/femul.c
+++ b/src/Specific/solinas64_2e383m421_7limbs/femul.c
@@ -14,12 +14,12 @@ static void femul(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
{ uint128_t x28 = (((uint128_t)x5 * x26) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((0x2 * ((uint128_t)x11 * x23)) + (((uint128_t)x13 * x21) + (((uint128_t)x15 * x19) + ((uint128_t)x14 * x17)))))));
- { uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (Const 421 * (0x2 * ((uint128_t)x14 * x26))));
- { uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (Const 421 * ((0x2 * ((uint128_t)x15 * x26)) + (0x2 * ((uint128_t)x14 * x27)))));
- { uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (Const 421 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
- { uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (Const 421 * ((0x2 * ((uint128_t)x11 * x26)) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (0x2 * ((uint128_t)x14 * x23)))))));
- { uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (Const 421 * ((0x2 * ((uint128_t)x9 * x26)) + ((0x2 * ((uint128_t)x11 * x27)) + (((uint128_t)x13 * x25) + ((0x2 * ((uint128_t)x15 * x23)) + (0x2 * ((uint128_t)x14 * x21))))))));
- { uint128_t x34 = (((uint128_t)x5 * x17) + (Const 421 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
+ { uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (0x1a5 * (0x2 * ((uint128_t)x14 * x26))));
+ { uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (0x1a5 * ((0x2 * ((uint128_t)x15 * x26)) + (0x2 * ((uint128_t)x14 * x27)))));
+ { uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (0x1a5 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
+ { uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (0x1a5 * ((0x2 * ((uint128_t)x11 * x26)) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (0x2 * ((uint128_t)x14 * x23)))))));
+ { uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (0x1a5 * ((0x2 * ((uint128_t)x9 * x26)) + ((0x2 * ((uint128_t)x11 * x27)) + (((uint128_t)x13 * x25) + ((0x2 * ((uint128_t)x15 * x23)) + (0x2 * ((uint128_t)x14 * x21))))))));
+ { uint128_t x34 = (((uint128_t)x5 * x17) + (0x1a5 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
{ uint128_t x35 = (x34 >> 0x37);
{ uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
{ uint128_t x37 = (x35 + x33);
@@ -40,7 +40,7 @@ static void femul(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ uint128_t x52 = (x50 + x28);
{ uint64_t x53 = (uint64_t) (x52 >> 0x36);
{ uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffffff);
- { uint128_t x55 = (x36 + ((uint128_t)(Const 421) * x53));
+ { uint128_t x55 = (x36 + ((uint128_t)0x1a5 * x53));
{ uint64_t x56 = (uint64_t) (x55 >> 0x37);
{ uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffffff);
{ uint64_t x58 = (x56 + x39);
diff --git a/src/Specific/solinas64_2e383m421_7limbs/femulDisplay.log b/src/Specific/solinas64_2e383m421_7limbs/femulDisplay.log
index fe6e8a6ab..b23253f01 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/femulDisplay.log
+++ b/src/Specific/solinas64_2e383m421_7limbs/femulDisplay.log
@@ -3,12 +3,12 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
uint128_t x28 = (((uint128_t)x5 * x26) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((0x2 * ((uint128_t)x11 * x23)) + (((uint128_t)x13 * x21) + (((uint128_t)x15 * x19) + ((uint128_t)x14 * x17)))))));
- uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (Const 421 * (0x2 * ((uint128_t)x14 * x26))));
- uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (Const 421 * ((0x2 * ((uint128_t)x15 * x26)) + (0x2 * ((uint128_t)x14 * x27)))));
- uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (Const 421 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
- uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (Const 421 * ((0x2 * ((uint128_t)x11 * x26)) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (0x2 * ((uint128_t)x14 * x23)))))));
- uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (Const 421 * ((0x2 * ((uint128_t)x9 * x26)) + ((0x2 * ((uint128_t)x11 * x27)) + (((uint128_t)x13 * x25) + ((0x2 * ((uint128_t)x15 * x23)) + (0x2 * ((uint128_t)x14 * x21))))))));
- uint128_t x34 = (((uint128_t)x5 * x17) + (Const 421 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
+ uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (0x1a5 * (0x2 * ((uint128_t)x14 * x26))));
+ uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (0x1a5 * ((0x2 * ((uint128_t)x15 * x26)) + (0x2 * ((uint128_t)x14 * x27)))));
+ uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (0x1a5 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
+ uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (0x1a5 * ((0x2 * ((uint128_t)x11 * x26)) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (0x2 * ((uint128_t)x14 * x23)))))));
+ uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (0x1a5 * ((0x2 * ((uint128_t)x9 * x26)) + ((0x2 * ((uint128_t)x11 * x27)) + (((uint128_t)x13 * x25) + ((0x2 * ((uint128_t)x15 * x23)) + (0x2 * ((uint128_t)x14 * x21))))))));
+ uint128_t x34 = (((uint128_t)x5 * x17) + (0x1a5 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
uint128_t x35 = (x34 >> 0x37);
uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
uint128_t x37 = (x35 + x33);
@@ -29,7 +29,7 @@ Interp-η
uint128_t x52 = (x50 + x28);
uint64_t x53 = (uint64_t) (x52 >> 0x36);
uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffffff);
- uint128_t x55 = (x36 + ((uint128_t)(Const 421) * x53));
+ uint128_t x55 = (x36 + ((uint128_t)0x1a5 * x53));
uint64_t x56 = (uint64_t) (x55 >> 0x37);
uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffffff);
uint64_t x58 = (x56 + x39);
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesquare.c b/src/Specific/solinas64_2e383m421_7limbs/fesquare.c
index eb06c0a14..dbb3b915e 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/fesquare.c
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesquare.c
@@ -7,12 +7,12 @@ static void fesquare(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
{ uint128_t x13 = (((uint128_t)x2 * x11) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x11 * x2)))))));
- { uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (Const 421 * (0x2 * ((uint128_t)x11 * x11))));
- { uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (Const 421 * ((0x2 * ((uint128_t)x12 * x11)) + (0x2 * ((uint128_t)x11 * x12)))));
- { uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (Const 421 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
- { uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (Const 421 * ((0x2 * ((uint128_t)x8 * x11)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (0x2 * ((uint128_t)x11 * x8)))))));
- { uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (Const 421 * ((0x2 * ((uint128_t)x6 * x11)) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (0x2 * ((uint128_t)x11 * x6))))))));
- { uint128_t x19 = (((uint128_t)x2 * x2) + (Const 421 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
+ { uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1a5 * (0x2 * ((uint128_t)x11 * x11))));
+ { uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1a5 * ((0x2 * ((uint128_t)x12 * x11)) + (0x2 * ((uint128_t)x11 * x12)))));
+ { uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1a5 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
+ { uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1a5 * ((0x2 * ((uint128_t)x8 * x11)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (0x2 * ((uint128_t)x11 * x8)))))));
+ { uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1a5 * ((0x2 * ((uint128_t)x6 * x11)) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (0x2 * ((uint128_t)x11 * x6))))))));
+ { uint128_t x19 = (((uint128_t)x2 * x2) + (0x1a5 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
{ uint128_t x20 = (x19 >> 0x37);
{ uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
{ uint128_t x22 = (x20 + x18);
@@ -33,7 +33,7 @@ static void fesquare(uint64_t out[7], const uint64_t in1[7]) {
{ uint128_t x37 = (x35 + x13);
{ uint64_t x38 = (uint64_t) (x37 >> 0x36);
{ uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- { uint128_t x40 = (x21 + ((uint128_t)(Const 421) * x38));
+ { uint128_t x40 = (x21 + ((uint128_t)0x1a5 * x38));
{ uint64_t x41 = (uint64_t) (x40 >> 0x37);
{ uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
{ uint64_t x43 = (x41 + x24);
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.log b/src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.log
index 13ac38a4f..8145d112e 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.log
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.log
@@ -3,12 +3,12 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
uint128_t x13 = (((uint128_t)x2 * x11) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x11 * x2)))))));
- uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (Const 421 * (0x2 * ((uint128_t)x11 * x11))));
- uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (Const 421 * ((0x2 * ((uint128_t)x12 * x11)) + (0x2 * ((uint128_t)x11 * x12)))));
- uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (Const 421 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
- uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (Const 421 * ((0x2 * ((uint128_t)x8 * x11)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (0x2 * ((uint128_t)x11 * x8)))))));
- uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (Const 421 * ((0x2 * ((uint128_t)x6 * x11)) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (0x2 * ((uint128_t)x11 * x6))))))));
- uint128_t x19 = (((uint128_t)x2 * x2) + (Const 421 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
+ uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1a5 * (0x2 * ((uint128_t)x11 * x11))));
+ uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1a5 * ((0x2 * ((uint128_t)x12 * x11)) + (0x2 * ((uint128_t)x11 * x12)))));
+ uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1a5 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
+ uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1a5 * ((0x2 * ((uint128_t)x8 * x11)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (0x2 * ((uint128_t)x11 * x8)))))));
+ uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1a5 * ((0x2 * ((uint128_t)x6 * x11)) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (0x2 * ((uint128_t)x11 * x6))))))));
+ uint128_t x19 = (((uint128_t)x2 * x2) + (0x1a5 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
uint128_t x20 = (x19 >> 0x37);
uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
uint128_t x22 = (x20 + x18);
@@ -29,7 +29,7 @@ Interp-η
uint128_t x37 = (x35 + x13);
uint64_t x38 = (uint64_t) (x37 >> 0x36);
uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- uint128_t x40 = (x21 + ((uint128_t)(Const 421) * x38));
+ uint128_t x40 = (x21 + ((uint128_t)0x1a5 * x38));
uint64_t x41 = (uint64_t) (x40 >> 0x37);
uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
uint64_t x43 = (x41 + x24);
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesub.c b/src/Specific/solinas64_2e383m421_7limbs/fesub.c
index 636f7dadf..aa444f92b 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 72057594037927094 + x5) - x17);
+ out[0] = ((0xfffffffffffcb6 + x5) - x17);
out[1] = ((0xfffffffffffffe + x7) - x19);
out[2] = ((0xfffffffffffffe + x9) - x21);
out[3] = ((0x7ffffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.log
index 812954ffa..fff9cdcf5 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0x7ffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((Const 72057594037927094 + x5) - x17)))
+ (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0x7ffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((0xfffffffffffcb6 + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e383m421_7limbs/freeze.c b/src/Specific/solinas64_2e383m421_7limbs/freeze.c
index 006365437..ffc4e0361 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e383m421_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963547);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffe5b);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 36028797018963547);
+ { uint64_t x35 = (x34 & 0x7ffffffffffe5b);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0x7fffffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.log
index a82a4c5b8..1b81b5d31 100644
--- a/src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963547);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffe5b);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 36028797018963547);
+ uint64_t x35 = (x34 & 0x7ffffffffffe5b);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0x7fffffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e383m421_8limbs/femul.c b/src/Specific/solinas64_2e383m421_8limbs/femul.c
index fd7b386e1..09581a285 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/femul.c
+++ b/src/Specific/solinas64_2e383m421_8limbs/femul.c
@@ -16,13 +16,13 @@ static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
{ uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- { uint128_t x33 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x17 * x19))))))) + (Const 421 * (0x2 * ((uint128_t)x16 * x30))));
- { uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (Const 421 * ((0x2 * ((uint128_t)x17 * x30)) + (0x2 * ((uint128_t)x16 * x31)))));
- { uint128_t x35 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + ((uint128_t)x13 * x19))))) + (Const 421 * ((0x2 * ((uint128_t)x15 * x30)) + ((0x2 * ((uint128_t)x17 * x31)) + (0x2 * ((uint128_t)x16 * x29))))));
- { uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (Const 421 * ((0x2 * ((uint128_t)x13 * x30)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + (0x2 * ((uint128_t)x16 * x27)))))));
- { uint128_t x37 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (Const 421 * ((0x2 * ((uint128_t)x11 * x30)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + (0x2 * ((uint128_t)x16 * x25))))))));
- { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (Const 421 * ((0x2 * ((uint128_t)x9 * x30)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + (0x2 * ((uint128_t)x16 * x23)))))))));
- { uint128_t x39 = (((uint128_t)x5 * x19) + (Const 421 * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
+ { uint128_t x33 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x17 * x19))))))) + (0x1a5 * (0x2 * ((uint128_t)x16 * x30))));
+ { uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x1a5 * ((0x2 * ((uint128_t)x17 * x30)) + (0x2 * ((uint128_t)x16 * x31)))));
+ { uint128_t x35 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + ((uint128_t)x13 * x19))))) + (0x1a5 * ((0x2 * ((uint128_t)x15 * x30)) + ((0x2 * ((uint128_t)x17 * x31)) + (0x2 * ((uint128_t)x16 * x29))))));
+ { uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x1a5 * ((0x2 * ((uint128_t)x13 * x30)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + (0x2 * ((uint128_t)x16 * x27)))))));
+ { uint128_t x37 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (0x1a5 * ((0x2 * ((uint128_t)x11 * x30)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + (0x2 * ((uint128_t)x16 * x25))))))));
+ { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x1a5 * ((0x2 * ((uint128_t)x9 * x30)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + (0x2 * ((uint128_t)x16 * x23)))))))));
+ { uint128_t x39 = (((uint128_t)x5 * x19) + (0x1a5 * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
{ uint64_t x40 = (uint64_t) (x39 >> 0x30);
{ uint64_t x41 = ((uint64_t)x39 & 0xffffffffffff);
{ uint128_t x42 = (x40 + x38);
@@ -46,7 +46,7 @@ static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ uint128_t x60 = (x58 + x32);
{ uint64_t x61 = (uint64_t) (x60 >> 0x2f);
{ uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffff);
- { uint128_t x63 = (x41 + ((uint128_t)(Const 421) * x61));
+ { uint128_t x63 = (x41 + ((uint128_t)0x1a5 * x61));
{ uint64_t x64 = (uint64_t) (x63 >> 0x30);
{ uint64_t x65 = ((uint64_t)x63 & 0xffffffffffff);
{ uint64_t x66 = (x64 + x44);
diff --git a/src/Specific/solinas64_2e383m421_8limbs/femulDisplay.log b/src/Specific/solinas64_2e383m421_8limbs/femulDisplay.log
index ac5af764d..15505fb1c 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/femulDisplay.log
+++ b/src/Specific/solinas64_2e383m421_8limbs/femulDisplay.log
@@ -3,13 +3,13 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- uint128_t x33 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x17 * x19))))))) + (Const 421 * (0x2 * ((uint128_t)x16 * x30))));
- uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (Const 421 * ((0x2 * ((uint128_t)x17 * x30)) + (0x2 * ((uint128_t)x16 * x31)))));
- uint128_t x35 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + ((uint128_t)x13 * x19))))) + (Const 421 * ((0x2 * ((uint128_t)x15 * x30)) + ((0x2 * ((uint128_t)x17 * x31)) + (0x2 * ((uint128_t)x16 * x29))))));
- uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (Const 421 * ((0x2 * ((uint128_t)x13 * x30)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + (0x2 * ((uint128_t)x16 * x27)))))));
- uint128_t x37 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (Const 421 * ((0x2 * ((uint128_t)x11 * x30)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + (0x2 * ((uint128_t)x16 * x25))))))));
- uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (Const 421 * ((0x2 * ((uint128_t)x9 * x30)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + (0x2 * ((uint128_t)x16 * x23)))))))));
- uint128_t x39 = (((uint128_t)x5 * x19) + (Const 421 * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
+ uint128_t x33 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x17 * x19))))))) + (0x1a5 * (0x2 * ((uint128_t)x16 * x30))));
+ uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x1a5 * ((0x2 * ((uint128_t)x17 * x30)) + (0x2 * ((uint128_t)x16 * x31)))));
+ uint128_t x35 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + ((uint128_t)x13 * x19))))) + (0x1a5 * ((0x2 * ((uint128_t)x15 * x30)) + ((0x2 * ((uint128_t)x17 * x31)) + (0x2 * ((uint128_t)x16 * x29))))));
+ uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x1a5 * ((0x2 * ((uint128_t)x13 * x30)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + (0x2 * ((uint128_t)x16 * x27)))))));
+ uint128_t x37 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (0x1a5 * ((0x2 * ((uint128_t)x11 * x30)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + (0x2 * ((uint128_t)x16 * x25))))))));
+ uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x1a5 * ((0x2 * ((uint128_t)x9 * x30)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + (0x2 * ((uint128_t)x16 * x23)))))))));
+ uint128_t x39 = (((uint128_t)x5 * x19) + (0x1a5 * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
uint64_t x40 = (uint64_t) (x39 >> 0x30);
uint64_t x41 = ((uint64_t)x39 & 0xffffffffffff);
uint128_t x42 = (x40 + x38);
@@ -33,7 +33,7 @@ Interp-η
uint128_t x60 = (x58 + x32);
uint64_t x61 = (uint64_t) (x60 >> 0x2f);
uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffff);
- uint128_t x63 = (x41 + ((uint128_t)(Const 421) * x61));
+ uint128_t x63 = (x41 + ((uint128_t)0x1a5 * x61));
uint64_t x64 = (uint64_t) (x63 >> 0x30);
uint64_t x65 = ((uint64_t)x63 & 0xffffffffffff);
uint64_t x66 = (x64 + x44);
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesquare.c b/src/Specific/solinas64_2e383m421_8limbs/fesquare.c
index 7e2e90b45..8741f3d62 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/fesquare.c
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesquare.c
@@ -8,13 +8,13 @@ static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
{ uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- { uint128_t x16 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (Const 421 * (0x2 * ((uint128_t)x13 * x13))));
- { uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (Const 421 * ((0x2 * ((uint128_t)x14 * x13)) + (0x2 * ((uint128_t)x13 * x14)))));
- { uint128_t x18 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (Const 421 * ((0x2 * ((uint128_t)x12 * x13)) + ((0x2 * ((uint128_t)x14 * x14)) + (0x2 * ((uint128_t)x13 * x12))))));
- { uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (Const 421 * ((0x2 * ((uint128_t)x10 * x13)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + (0x2 * ((uint128_t)x13 * x10)))))));
- { uint128_t x20 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (Const 421 * ((0x2 * ((uint128_t)x8 * x13)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + (0x2 * ((uint128_t)x13 * x8))))))));
- { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (Const 421 * ((0x2 * ((uint128_t)x6 * x13)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + (0x2 * ((uint128_t)x13 * x6)))))))));
- { uint128_t x22 = (((uint128_t)x2 * x2) + (Const 421 * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
+ { uint128_t x16 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x1a5 * (0x2 * ((uint128_t)x13 * x13))));
+ { uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1a5 * ((0x2 * ((uint128_t)x14 * x13)) + (0x2 * ((uint128_t)x13 * x14)))));
+ { uint128_t x18 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x1a5 * ((0x2 * ((uint128_t)x12 * x13)) + ((0x2 * ((uint128_t)x14 * x14)) + (0x2 * ((uint128_t)x13 * x12))))));
+ { uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1a5 * ((0x2 * ((uint128_t)x10 * x13)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + (0x2 * ((uint128_t)x13 * x10)))))));
+ { uint128_t x20 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1a5 * ((0x2 * ((uint128_t)x8 * x13)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + (0x2 * ((uint128_t)x13 * x8))))))));
+ { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1a5 * ((0x2 * ((uint128_t)x6 * x13)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + (0x2 * ((uint128_t)x13 * x6)))))))));
+ { uint128_t x22 = (((uint128_t)x2 * x2) + (0x1a5 * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
{ uint64_t x23 = (uint64_t) (x22 >> 0x30);
{ uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
{ uint128_t x25 = (x23 + x21);
@@ -38,7 +38,7 @@ static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
{ uint128_t x43 = (x41 + x15);
{ uint64_t x44 = (uint64_t) (x43 >> 0x2f);
{ uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffff);
- { uint128_t x46 = (x24 + ((uint128_t)(Const 421) * x44));
+ { uint128_t x46 = (x24 + ((uint128_t)0x1a5 * x44));
{ uint64_t x47 = (uint64_t) (x46 >> 0x30);
{ uint64_t x48 = ((uint64_t)x46 & 0xffffffffffff);
{ uint64_t x49 = (x47 + x27);
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.log b/src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.log
index 11c9cdd15..5fdf43f35 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.log
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.log
@@ -3,13 +3,13 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- uint128_t x16 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (Const 421 * (0x2 * ((uint128_t)x13 * x13))));
- uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (Const 421 * ((0x2 * ((uint128_t)x14 * x13)) + (0x2 * ((uint128_t)x13 * x14)))));
- uint128_t x18 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (Const 421 * ((0x2 * ((uint128_t)x12 * x13)) + ((0x2 * ((uint128_t)x14 * x14)) + (0x2 * ((uint128_t)x13 * x12))))));
- uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (Const 421 * ((0x2 * ((uint128_t)x10 * x13)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + (0x2 * ((uint128_t)x13 * x10)))))));
- uint128_t x20 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (Const 421 * ((0x2 * ((uint128_t)x8 * x13)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + (0x2 * ((uint128_t)x13 * x8))))))));
- uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (Const 421 * ((0x2 * ((uint128_t)x6 * x13)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + (0x2 * ((uint128_t)x13 * x6)))))))));
- uint128_t x22 = (((uint128_t)x2 * x2) + (Const 421 * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
+ uint128_t x16 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x1a5 * (0x2 * ((uint128_t)x13 * x13))));
+ uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1a5 * ((0x2 * ((uint128_t)x14 * x13)) + (0x2 * ((uint128_t)x13 * x14)))));
+ uint128_t x18 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x1a5 * ((0x2 * ((uint128_t)x12 * x13)) + ((0x2 * ((uint128_t)x14 * x14)) + (0x2 * ((uint128_t)x13 * x12))))));
+ uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1a5 * ((0x2 * ((uint128_t)x10 * x13)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + (0x2 * ((uint128_t)x13 * x10)))))));
+ uint128_t x20 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1a5 * ((0x2 * ((uint128_t)x8 * x13)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + (0x2 * ((uint128_t)x13 * x8))))))));
+ uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1a5 * ((0x2 * ((uint128_t)x6 * x13)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + (0x2 * ((uint128_t)x13 * x6)))))))));
+ uint128_t x22 = (((uint128_t)x2 * x2) + (0x1a5 * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
uint64_t x23 = (uint64_t) (x22 >> 0x30);
uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
uint128_t x25 = (x23 + x21);
@@ -33,7 +33,7 @@ Interp-η
uint128_t x43 = (x41 + x15);
uint64_t x44 = (uint64_t) (x43 >> 0x2f);
uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffff);
- uint128_t x46 = (x24 + ((uint128_t)(Const 421) * x44));
+ uint128_t x46 = (x24 + ((uint128_t)0x1a5 * x44));
uint64_t x47 = (uint64_t) (x46 >> 0x30);
uint64_t x48 = ((uint64_t)x46 & 0xffffffffffff);
uint64_t x49 = (x47 + x27);
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesub.c b/src/Specific/solinas64_2e383m421_8limbs/fesub.c
index 32812eee2..2a0c0ae91 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/fesub.c
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesub.c
@@ -15,7 +15,7 @@ static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x23 = in2[2];
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
- out[0] = ((Const 562949953420470 + x5) - x19);
+ out[0] = ((0x1fffffffffcb6 + x5) - x19);
out[1] = ((0x1fffffffffffe + x7) - x21);
out[2] = ((0x1fffffffffffe + x9) - x23);
out[3] = ((0x1fffffffffffe + x11) - x25);
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.log b/src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.log
index afd054e46..29e67e931 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((Const 562949953420470 + x5) - x19)))
+ (((0xfffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((0x1fffffffffcb6 + x5) - x19)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e383m421_8limbs/freeze.c b/src/Specific/solinas64_2e383m421_8limbs/freeze.c
index ef4de2804..bed0e78df 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/freeze.c
+++ b/src/Specific/solinas64_2e383m421_8limbs/freeze.c
@@ -7,7 +7,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { 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)) (0x0, Return x2, Const 281474976710235);
+ { 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)) (0x0, Return x2, 0xfffffffffe5b);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
{ 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 x6, 0xffffffffffff);
{ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
@@ -16,7 +16,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
{ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
{ uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & Const 281474976710235);
+ { uint64_t x40 = (x39 & 0xfffffffffe5b);
{ uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
{ uint64_t x44 = (x39 & 0xffffffffffff);
{ uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.log b/src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.log
index 02aaf0d63..ced99cc44 100644
--- a/src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- 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)) (0x0, Return x2, Const 281474976710235);
+ 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)) (0x0, Return x2, 0xfffffffffe5b);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
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 x6, 0xffffffffffff);
uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
@@ -11,7 +11,7 @@ Interp-η
uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffff);
uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & Const 281474976710235);
+ uint64_t x40 = (x39 & 0xfffffffffe5b);
uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
uint64_t x44 = (x39 & 0xffffffffffff);
uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e384m317_7limbs/fesub.c b/src/Specific/solinas64_2e384m317_7limbs/fesub.c
index d54305090..6cdb3bf66 100644
--- a/src/Specific/solinas64_2e384m317_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e384m317_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 72057594037927302 + x5) - x17);
+ out[0] = ((0xfffffffffffd86 + x5) - x17);
out[1] = ((0xfffffffffffffe + x7) - x19);
out[2] = ((0xfffffffffffffe + x9) - x21);
out[3] = ((0xfffffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.log
index f2e1afa61..3f9fe41d4 100644
--- a/src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0xfffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((Const 72057594037927302 + x5) - x17)))
+ (((0x7ffffffffffffe + x14) - x26), ((0xfffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0xfffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0xfffffffffffffe + x7) - x19), ((0xfffffffffffd86 + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m317_7limbs/freeze.c b/src/Specific/solinas64_2e384m317_7limbs/freeze.c
index d620c85e0..1f14c5109 100644
--- a/src/Specific/solinas64_2e384m317_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e384m317_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963651);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffec3);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 36028797018963651);
+ { uint64_t x35 = (x34 & 0x7ffffffffffec3);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0x7fffffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.log
index 2bdc6512b..3b068fdfb 100644
--- a/src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963651);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffec3);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7fffffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7fffffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7fffffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 36028797018963651);
+ uint64_t x35 = (x34 & 0x7ffffffffffec3);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0x7fffffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e389m21_7limbs/fesub.c b/src/Specific/solinas64_2e389m21_7limbs/fesub.c
index 6ebc53a2a..0e6db466c 100644
--- a/src/Specific/solinas64_2e389m21_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e389m21_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 144115188075855830 + x5) - x17);
+ out[0] = ((0x1ffffffffffffd6 + x5) - x17);
out[1] = ((0x1fffffffffffffe + x7) - x19);
out[2] = ((0xfffffffffffffe + x9) - x21);
out[3] = ((0x1fffffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.log
index 5ecdb767d..86ea125bb 100644
--- a/src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0xfffffffffffffe + x14) - x26), ((0x1fffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0x1fffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0x1fffffffffffffe + x7) - x19), ((Const 144115188075855830 + x5) - x17)))
+ (((0xfffffffffffffe + x14) - x26), ((0x1fffffffffffffe + x15) - x27), ((0xfffffffffffffe + x13) - x25), ((0x1fffffffffffffe + x11) - x23), ((0xfffffffffffffe + x9) - x21), ((0x1fffffffffffffe + x7) - x19), ((0x1ffffffffffffd6 + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e389m21_7limbs/freeze.c b/src/Specific/solinas64_2e389m21_7limbs/freeze.c
index 07d03f0e7..6e965f1f2 100644
--- a/src/Specific/solinas64_2e389m21_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e389m21_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 72057594037927915);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffeb);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0xffffffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x7fffffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 72057594037927915);
+ { uint64_t x35 = (x34 & 0xffffffffffffeb);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0xffffffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.log
index cfcad77e9..de72e2155 100644
--- a/src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 72057594037927915);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffeb);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0xffffffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7fffffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0xffffffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0xffffffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x7fffffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 72057594037927915);
+ uint64_t x35 = (x34 & 0xffffffffffffeb);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0xffffffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e389m21_8limbs/fesub.c b/src/Specific/solinas64_2e389m21_8limbs/fesub.c
index 1620ce547..1416209a0 100644
--- a/src/Specific/solinas64_2e389m21_8limbs/fesub.c
+++ b/src/Specific/solinas64_2e389m21_8limbs/fesub.c
@@ -15,7 +15,7 @@ static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x23 = in2[2];
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
- out[0] = ((Const 1125899906842582 + x5) - x19);
+ out[0] = ((0x3ffffffffffd6 + x5) - x19);
out[1] = ((0x3fffffffffffe + x7) - x21);
out[2] = ((0x1fffffffffffe + x9) - x23);
out[3] = ((0x3fffffffffffe + x11) - x25);
diff --git a/src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.log b/src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.log
index 4ab853171..45b76924f 100644
--- a/src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fffffffffffe + x16) - x30), ((0x3fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x3fffffffffffe + x13) - x27), ((0x3fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x3fffffffffffe + x7) - x21), ((Const 1125899906842582 + x5) - x19)))
+ (((0x1fffffffffffe + x16) - x30), ((0x3fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x3fffffffffffe + x13) - x27), ((0x3fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x3fffffffffffe + x7) - x21), ((0x3ffffffffffd6 + x5) - x19)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e389m21_8limbs/freeze.c b/src/Specific/solinas64_2e389m21_8limbs/freeze.c
index 257f6340c..7d15ea9ba 100644
--- a/src/Specific/solinas64_2e389m21_8limbs/freeze.c
+++ b/src/Specific/solinas64_2e389m21_8limbs/freeze.c
@@ -7,7 +7,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421291);
+ { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffeb);
{ 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 x4, 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 x6, 0xffffffffffff);
{ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x1ffffffffffff);
@@ -16,7 +16,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffffffffff);
{ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffff);
{ uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & Const 562949953421291);
+ { uint64_t x40 = (x39 & 0x1ffffffffffeb);
{ uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
{ uint64_t x44 = (x39 & 0x1ffffffffffff);
{ uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.log b/src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.log
index ae908defd..b55b684fa 100644
--- a/src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421291);
+ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffeb);
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 x4, 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 x6, 0xffffffffffff);
uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x1ffffffffffff);
@@ -11,7 +11,7 @@ Interp-η
uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffffffffff);
uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffff);
uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & Const 562949953421291);
+ uint64_t x40 = (x39 & 0x1ffffffffffeb);
uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
uint64_t x44 = (x39 & 0x1ffffffffffff);
uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e401m31_7limbs/fesub.c b/src/Specific/solinas64_2e401m31_7limbs/fesub.c
index 5c54a1648..9d535d7fd 100644
--- a/src/Specific/solinas64_2e401m31_7limbs/fesub.c
+++ b/src/Specific/solinas64_2e401m31_7limbs/fesub.c
@@ -13,7 +13,7 @@ static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7])
{ const uint64_t x21 = in2[2];
{ const uint64_t x19 = in2[1];
{ const uint64_t x17 = in2[0];
- out[0] = ((Const 576460752303423426 + x5) - x17);
+ out[0] = ((0x7ffffffffffffc2 + x5) - x17);
out[1] = ((0x3fffffffffffffe + x7) - x19);
out[2] = ((0x3fffffffffffffe + x9) - x21);
out[3] = ((0x7fffffffffffffe + x11) - x23);
diff --git a/src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.log
index 3782f8aa2..8b63ba844 100644
--- a/src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x3fffffffffffffe + x14) - x26), ((0x3fffffffffffffe + x15) - x27), ((0x3fffffffffffffe + x13) - x25), ((0x7fffffffffffffe + x11) - x23), ((0x3fffffffffffffe + x9) - x21), ((0x3fffffffffffffe + x7) - x19), ((Const 576460752303423426 + x5) - x17)))
+ (((0x3fffffffffffffe + x14) - x26), ((0x3fffffffffffffe + x15) - x27), ((0x3fffffffffffffe + x13) - x25), ((0x7fffffffffffffe + x11) - x23), ((0x3fffffffffffffe + x9) - x21), ((0x3fffffffffffffe + x7) - x19), ((0x7ffffffffffffc2 + x5) - x17)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e401m31_7limbs/freeze.c b/src/Specific/solinas64_2e401m31_7limbs/freeze.c
index 121e3cdab..29a93a41a 100644
--- a/src/Specific/solinas64_2e401m31_7limbs/freeze.c
+++ b/src/Specific/solinas64_2e401m31_7limbs/freeze.c
@@ -6,7 +6,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 288230376151711713);
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffe1);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x1ffffffffffffff);
{ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffffffffffff);
{ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3ffffffffffffff);
@@ -14,7 +14,7 @@ static void freeze(uint64_t out[7], const uint64_t in1[7]) {
{ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x1ffffffffffffff);
{ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x1ffffffffffffff);
{ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & Const 288230376151711713);
+ { uint64_t x35 = (x34 & 0x3ffffffffffffe1);
{ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
{ uint64_t x39 = (x34 & 0x1ffffffffffffff);
{ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.log
index 7beef5a2d..793a37ad2 100644
--- a/src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 288230376151711713);
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffe1);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x1ffffffffffffff);
uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x1ffffffffffffff);
uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3ffffffffffffff);
@@ -10,7 +10,7 @@ Interp-η
uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x1ffffffffffffff);
uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x1ffffffffffffff);
uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & Const 288230376151711713);
+ uint64_t x35 = (x34 & 0x3ffffffffffffe1);
uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
uint64_t x39 = (x34 & 0x1ffffffffffffff);
uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
diff --git a/src/Specific/solinas64_2e413m21_8limbs/fesub.c b/src/Specific/solinas64_2e413m21_8limbs/fesub.c
index 14358dc9a..f535095a3 100644
--- a/src/Specific/solinas64_2e413m21_8limbs/fesub.c
+++ b/src/Specific/solinas64_2e413m21_8limbs/fesub.c
@@ -15,7 +15,7 @@ static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x23 = in2[2];
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
- out[0] = ((Const 9007199254740950 + x5) - x19);
+ out[0] = ((0x1fffffffffffd6 + x5) - x19);
out[1] = ((0x1ffffffffffffe + x7) - x21);
out[2] = ((0xffffffffffffe + x9) - x23);
out[3] = ((0x1ffffffffffffe + x11) - x25);
diff --git a/src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.log b/src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.log
index c147e96a6..cbc94a4e5 100644
--- a/src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xffffffffffffe + x16) - x30), ((0x1ffffffffffffe + x17) - x31), ((0xffffffffffffe + x15) - x29), ((0x1ffffffffffffe + x13) - x27), ((0x1ffffffffffffe + x11) - x25), ((0xffffffffffffe + x9) - x23), ((0x1ffffffffffffe + x7) - x21), ((Const 9007199254740950 + x5) - x19)))
+ (((0xffffffffffffe + x16) - x30), ((0x1ffffffffffffe + x17) - x31), ((0xffffffffffffe + x15) - x29), ((0x1ffffffffffffe + x13) - x27), ((0x1ffffffffffffe + x11) - x25), ((0xffffffffffffe + x9) - x23), ((0x1ffffffffffffe + x7) - x21), ((0x1fffffffffffd6 + x5) - x19)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21_8limbs/freeze.c b/src/Specific/solinas64_2e413m21_8limbs/freeze.c
index 83c35d2e0..7095734ee 100644
--- a/src/Specific/solinas64_2e413m21_8limbs/freeze.c
+++ b/src/Specific/solinas64_2e413m21_8limbs/freeze.c
@@ -7,7 +7,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 4503599627370475);
+ { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffeb);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffffffffff);
{ uint64_t x22; uint8_t x23 = _subborrow_u51(x20, x6, 0x7ffffffffffff, &x22);
{ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffffffffff);
@@ -16,7 +16,7 @@ static void freeze(uint64_t out[8], const uint64_t in1[8]) {
{ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffffffffff);
{ uint64_t x37; uint8_t x38 = _subborrow_u51(x35, x13, 0x7ffffffffffff, &x37);
{ uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & Const 4503599627370475);
+ { uint64_t x40 = (x39 & 0xfffffffffffeb);
{ uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
{ uint64_t x44 = (x39 & 0xfffffffffffff);
{ uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.log b/src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.log
index 79211b5c1..0eebf2f14 100644
--- a/src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 4503599627370475);
+ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffeb);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffffffffff);
uint64_t x22, uint8_t x23 = subborrow_u51(x20, x6, 0x7ffffffffffff);
uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffffffffff);
@@ -11,7 +11,7 @@ Interp-η
uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffffffffff);
uint64_t x37, uint8_t x38 = subborrow_u51(x35, x13, 0x7ffffffffffff);
uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & Const 4503599627370475);
+ uint64_t x40 = (x39 & 0xfffffffffffeb);
uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
uint64_t x44 = (x39 & 0xfffffffffffff);
uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
diff --git a/src/Specific/solinas64_2e414m17_8limbs/fesub.c b/src/Specific/solinas64_2e414m17_8limbs/fesub.c
index f656a1b9d..df95f0373 100644
--- a/src/Specific/solinas64_2e414m17_8limbs/fesub.c
+++ b/src/Specific/solinas64_2e414m17_8limbs/fesub.c
@@ -15,7 +15,7 @@ static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8])
{ const uint64_t x23 = in2[2];
{ const uint64_t x21 = in2[1];
{ const uint64_t x19 = in2[0];
- out[0] = ((Const 9007199254740958 + x5) - x19);
+ out[0] = ((0x1fffffffffffde + x5) - x19);
out[1] = ((0x1ffffffffffffe + x7) - x21);
out[2] = ((0x1ffffffffffffe + x9) - x23);
out[3] = ((0xffffffffffffe + x11) - x25);
diff --git a/src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.log b/src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.log
index f28632faa..3dc4cf59d 100644
--- a/src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xffffffffffffe + x16) - x30), ((0x1ffffffffffffe + x17) - x31), ((0x1ffffffffffffe + x15) - x29), ((0x1ffffffffffffe + x13) - x27), ((0xffffffffffffe + x11) - x25), ((0x1ffffffffffffe + x9) - x23), ((0x1ffffffffffffe + x7) - x21), ((Const 9007199254740958 + x5) - x19)))
+ (((0xffffffffffffe + x16) - x30), ((0x1ffffffffffffe + x17) - x31), ((0x1ffffffffffffe + x15) - x29), ((0x1ffffffffffffe + x13) - x27), ((0xffffffffffffe + x11) - x25), ((0x1ffffffffffffe + x9) - x23), ((0x1ffffffffffffe + x7) - x21), ((0x1fffffffffffde + x5) - x19)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.c b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.c
index ecc33971f..684af71ed 100644
--- a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.c
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.c
@@ -21,7 +21,7 @@ static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9])
out[1] = ((0x7ffffffffffe + x7) - x23);
out[2] = ((0x7ffffffffffe + x9) - x25);
out[3] = ((0x7ffffffffffe + x11) - x27);
- out[4] = ((Const 281474959933438 + x13) - x29);
+ out[4] = ((0xfffffefffffe + x13) - x29);
out[5] = ((0x7ffffffffffe + x15) - x31);
out[6] = ((0x7ffffffffffe + x17) - x33);
out[7] = ((0x7ffffffffffe + x19) - x35);
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.log b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.log
index 3e946118c..b445fd13f 100644
--- a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x7ffffffffffe + x18) - x34), ((0x7ffffffffffe + x19) - x35), ((0x7ffffffffffe + x17) - x33), ((0x7ffffffffffe + x15) - x31), ((Const 281474959933438 + x13) - x29), ((0x7ffffffffffe + x11) - x27), ((0x7ffffffffffe + x9) - x25), ((0x7ffffffffffe + x7) - x23), ((0xfffffffffffe + x5) - x21)))
+ (((0x7ffffffffffe + x18) - x34), ((0x7ffffffffffe + x19) - x35), ((0x7ffffffffffe + x17) - x33), ((0x7ffffffffffe + x15) - x31), ((0xfffffefffffe + x13) - x29), ((0x7ffffffffffe + x11) - x27), ((0x7ffffffffffe + x9) - x25), ((0x7ffffffffffe + x7) - x23), ((0xfffffffffffe + x5) - x21)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.c b/src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.c
index 4665456c1..cd35a2c42 100644
--- a/src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.c
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.c
@@ -12,7 +12,7 @@ static void freeze(uint64_t out[9], const uint64_t in1[9]) {
{ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffffffffff);
{ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffffffffff);
{ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, Const 140737479966719);
+ { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffff7fffff);
{ uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffff);
{ uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffffffffff);
{ uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffff);
@@ -26,7 +26,7 @@ static void freeze(uint64_t out[9], const uint64_t in1[9]) {
{ uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
{ uint64_t x57 = (x44 & 0x3fffffffffff);
{ uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint64_t x61 = (x44 & Const 140737479966719);
+ { uint64_t x61 = (x44 & 0x7fffff7fffff);
{ uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
{ uint64_t x65 = (x44 & 0x3fffffffffff);
{ uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.log b/src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.log
index bd3bf9705..afe8bd111 100644
--- a/src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.log
@@ -6,7 +6,7 @@ Interp-η
uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffffffffff);
uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffffffffff);
uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, Const 140737479966719);
+ uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffff7fffff);
uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffff);
uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffffffffff);
uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffff);
@@ -20,7 +20,7 @@ Interp-η
uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
uint64_t x57 = (x44 & 0x3fffffffffff);
uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint64_t x61 = (x44 & Const 140737479966719);
+ uint64_t x61 = (x44 & 0x7fffff7fffff);
uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
uint64_t x65 = (x44 & 0x3fffffffffff);
uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.c b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.c
index 0cf5c686e..ebbdb28d8 100644
--- a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.c
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.c
@@ -24,7 +24,7 @@ static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[1
out[2] = ((0x3ffffffffffe + x9) - x27);
out[3] = ((0x3ffffffffffe + x11) - x29);
out[4] = ((0x1ffffffffffe + x13) - x31);
- out[5] = ((Const 70368744177660 + x15) - x33);
+ out[5] = ((0x3ffffffffffc + x15) - x33);
out[6] = ((0x3ffffffffffe + x17) - x35);
out[7] = ((0x3ffffffffffe + x19) - x37);
out[8] = ((0x3ffffffffffe + x21) - x39);
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.log b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.log
index 426dcd1db..65de26904 100644
--- a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x1ffffffffffe + x20) - x38), ((0x3ffffffffffe + x21) - x39), ((0x3ffffffffffe + x19) - x37), ((0x3ffffffffffe + x17) - x35), ((Const 70368744177660 + x15) - x33), ((0x1ffffffffffe + x13) - x31), ((0x3ffffffffffe + x11) - x29), ((0x3ffffffffffe + x9) - x27), ((0x3ffffffffffe + x7) - x25), ((0x3ffffffffffe + x5) - x23)))
+ (((0x1ffffffffffe + x20) - x38), ((0x3ffffffffffe + x21) - x39), ((0x3ffffffffffe + x19) - x37), ((0x3ffffffffffe + x17) - x35), ((0x3ffffffffffc + x15) - x33), ((0x1ffffffffffe + x13) - x31), ((0x3ffffffffffe + x11) - x29), ((0x3ffffffffffe + x9) - x27), ((0x3ffffffffffe + x7) - x25), ((0x3ffffffffffe + x5) - x23)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/femul.c b/src/Specific/solinas64_2e450m2e225m1_10limbs/femul.c
new file mode 100644
index 000000000..bab1f14b7
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/femul.c
@@ -0,0 +1,97 @@
+static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ { uint128_t x40 = (((uint128_t)(x13 + x20) * (x31 + x38)) - ((uint128_t)x13 * x31));
+ { uint128_t x41 = ((((uint128_t)(x11 + x21) * (x31 + x38)) + ((uint128_t)(x13 + x20) * (x29 + x39))) - (((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)));
+ { uint128_t x42 = ((((uint128_t)(x9 + x19) * (x31 + x38)) + (((uint128_t)(x11 + x21) * (x29 + x39)) + ((uint128_t)(x13 + x20) * (x27 + x37)))) - (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))));
+ { uint128_t x43 = ((((uint128_t)(x7 + x17) * (x31 + x38)) + (((uint128_t)(x9 + x19) * (x29 + x39)) + (((uint128_t)(x11 + x21) * (x27 + x37)) + ((uint128_t)(x13 + x20) * (x25 + x35))))) - (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))));
+ { uint128_t x44 = ((((uint128_t)(x5 + x15) * (x31 + x38)) + (((uint128_t)(x7 + x17) * (x29 + x39)) + (((uint128_t)(x9 + x19) * (x27 + x37)) + (((uint128_t)(x11 + x21) * (x25 + x35)) + ((uint128_t)(x13 + x20) * (x23 + x33)))))) - (((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))));
+ { uint128_t x45 = ((((uint128_t)(x5 + x15) * (x29 + x39)) + (((uint128_t)(x7 + x17) * (x27 + x37)) + (((uint128_t)(x9 + x19) * (x25 + x35)) + ((uint128_t)(x11 + x21) * (x23 + x33))))) - (((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))));
+ { uint128_t x46 = ((((uint128_t)(x5 + x15) * (x27 + x37)) + (((uint128_t)(x7 + x17) * (x25 + x35)) + ((uint128_t)(x9 + x19) * (x23 + x33)))) - (((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))));
+ { uint128_t x47 = ((((uint128_t)(x5 + x15) * (x25 + x35)) + ((uint128_t)(x7 + x17) * (x23 + x33))) - (((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)));
+ { uint128_t x48 = (((uint128_t)(x5 + x15) * (x23 + x33)) - ((uint128_t)x5 * x23));
+ { uint128_t x49 = (((((uint128_t)x13 * x31) + ((uint128_t)x20 * x38)) + x45) + x40);
+ { uint128_t x50 = ((((((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)) + (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))) + x46) + x41);
+ { uint128_t x51 = ((((((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))) + (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))) + x47) + x42);
+ { uint128_t x52 = ((((((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))) + (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))) + x48) + x43);
+ { uint128_t x53 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33))))));
+ { uint128_t x54 = (((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + ((uint128_t)x21 * x33))))) + x40);
+ { uint128_t x55 = (((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + ((uint128_t)x19 * x33)))) + x41);
+ { uint128_t x56 = (((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (((uint128_t)x15 * x35) + ((uint128_t)x17 * x33))) + x42);
+ { uint128_t x57 = ((((uint128_t)x5 * x23) + ((uint128_t)x15 * x33)) + x43);
+ { uint64_t x58 = (uint64_t) (x53 >> 0x2d);
+ { uint64_t x59 = ((uint64_t)x53 & 0x1fffffffffff);
+ { uint64_t x60 = (uint64_t) (x44 >> 0x2d);
+ { uint64_t x61 = ((uint64_t)x44 & 0x1fffffffffff);
+ { uint128_t x62 = (((uint128_t)0x200000000000 * x60) + x61);
+ { uint64_t x63 = (uint64_t) (x62 >> 0x2d);
+ { uint64_t x64 = ((uint64_t)x62 & 0x1fffffffffff);
+ { uint128_t x65 = ((x58 + x52) + x63);
+ { uint64_t x66 = (uint64_t) (x65 >> 0x2d);
+ { uint64_t x67 = ((uint64_t)x65 & 0x1fffffffffff);
+ { uint128_t x68 = (x57 + x63);
+ { uint64_t x69 = (uint64_t) (x68 >> 0x2d);
+ { uint64_t x70 = ((uint64_t)x68 & 0x1fffffffffff);
+ { uint128_t x71 = (x66 + x51);
+ { uint64_t x72 = (uint64_t) (x71 >> 0x2d);
+ { uint64_t x73 = ((uint64_t)x71 & 0x1fffffffffff);
+ { uint128_t x74 = (x69 + x56);
+ { uint64_t x75 = (uint64_t) (x74 >> 0x2d);
+ { uint64_t x76 = ((uint64_t)x74 & 0x1fffffffffff);
+ { uint128_t x77 = (x72 + x50);
+ { uint64_t x78 = (uint64_t) (x77 >> 0x2d);
+ { uint64_t x79 = ((uint64_t)x77 & 0x1fffffffffff);
+ { uint128_t x80 = (x75 + x55);
+ { uint64_t x81 = (uint64_t) (x80 >> 0x2d);
+ { uint64_t x82 = ((uint64_t)x80 & 0x1fffffffffff);
+ { uint128_t x83 = (x78 + x49);
+ { uint64_t x84 = (uint64_t) (x83 >> 0x2d);
+ { uint64_t x85 = ((uint64_t)x83 & 0x1fffffffffff);
+ { uint128_t x86 = (x81 + x54);
+ { uint64_t x87 = (uint64_t) (x86 >> 0x2d);
+ { uint64_t x88 = ((uint64_t)x86 & 0x1fffffffffff);
+ { uint64_t x89 = (x84 + x64);
+ { uint64_t x90 = (x89 >> 0x2d);
+ { uint64_t x91 = (x89 & 0x1fffffffffff);
+ { uint64_t x92 = (x87 + x59);
+ { uint64_t x93 = (x92 >> 0x2d);
+ { uint64_t x94 = (x92 & 0x1fffffffffff);
+ { uint64_t x95 = ((0x200000000000 * x90) + x91);
+ { uint64_t x96 = (x95 >> 0x2d);
+ { uint64_t x97 = (x95 & 0x1fffffffffff);
+ { uint64_t x98 = ((x93 + x67) + x96);
+ { uint64_t x99 = (x98 >> 0x2d);
+ { uint64_t x100 = (x98 & 0x1fffffffffff);
+ { uint64_t x101 = (x70 + x96);
+ { uint64_t x102 = (x101 >> 0x2d);
+ { uint64_t x103 = (x101 & 0x1fffffffffff);
+ out[0] = x103;
+ out[1] = (x102 + x76);
+ out[2] = x82;
+ out[3] = x88;
+ out[4] = x94;
+ out[5] = x100;
+ out[6] = (x99 + x73);
+ out[7] = x79;
+ out[8] = x85;
+ out[9] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.log b/src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.log
new file mode 100644
index 000000000..08f7d86c7
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.log
@@ -0,0 +1,71 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint128_t x40 = (((uint128_t)(x13 + x20) * (x31 + x38)) - ((uint128_t)x13 * x31));
+ uint128_t x41 = ((((uint128_t)(x11 + x21) * (x31 + x38)) + ((uint128_t)(x13 + x20) * (x29 + x39))) - (((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)));
+ uint128_t x42 = ((((uint128_t)(x9 + x19) * (x31 + x38)) + (((uint128_t)(x11 + x21) * (x29 + x39)) + ((uint128_t)(x13 + x20) * (x27 + x37)))) - (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))));
+ uint128_t x43 = ((((uint128_t)(x7 + x17) * (x31 + x38)) + (((uint128_t)(x9 + x19) * (x29 + x39)) + (((uint128_t)(x11 + x21) * (x27 + x37)) + ((uint128_t)(x13 + x20) * (x25 + x35))))) - (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))));
+ uint128_t x44 = ((((uint128_t)(x5 + x15) * (x31 + x38)) + (((uint128_t)(x7 + x17) * (x29 + x39)) + (((uint128_t)(x9 + x19) * (x27 + x37)) + (((uint128_t)(x11 + x21) * (x25 + x35)) + ((uint128_t)(x13 + x20) * (x23 + x33)))))) - (((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))));
+ uint128_t x45 = ((((uint128_t)(x5 + x15) * (x29 + x39)) + (((uint128_t)(x7 + x17) * (x27 + x37)) + (((uint128_t)(x9 + x19) * (x25 + x35)) + ((uint128_t)(x11 + x21) * (x23 + x33))))) - (((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))));
+ uint128_t x46 = ((((uint128_t)(x5 + x15) * (x27 + x37)) + (((uint128_t)(x7 + x17) * (x25 + x35)) + ((uint128_t)(x9 + x19) * (x23 + x33)))) - (((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))));
+ uint128_t x47 = ((((uint128_t)(x5 + x15) * (x25 + x35)) + ((uint128_t)(x7 + x17) * (x23 + x33))) - (((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)));
+ uint128_t x48 = (((uint128_t)(x5 + x15) * (x23 + x33)) - ((uint128_t)x5 * x23));
+ uint128_t x49 = (((((uint128_t)x13 * x31) + ((uint128_t)x20 * x38)) + x45) + x40);
+ uint128_t x50 = ((((((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)) + (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))) + x46) + x41);
+ uint128_t x51 = ((((((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))) + (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))) + x47) + x42);
+ uint128_t x52 = ((((((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))) + (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))) + x48) + x43);
+ uint128_t x53 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33))))));
+ uint128_t x54 = (((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + ((uint128_t)x21 * x33))))) + x40);
+ uint128_t x55 = (((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + ((uint128_t)x19 * x33)))) + x41);
+ uint128_t x56 = (((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (((uint128_t)x15 * x35) + ((uint128_t)x17 * x33))) + x42);
+ uint128_t x57 = ((((uint128_t)x5 * x23) + ((uint128_t)x15 * x33)) + x43);
+ uint64_t x58 = (uint64_t) (x53 >> 0x2d);
+ uint64_t x59 = ((uint64_t)x53 & 0x1fffffffffff);
+ uint64_t x60 = (uint64_t) (x44 >> 0x2d);
+ uint64_t x61 = ((uint64_t)x44 & 0x1fffffffffff);
+ uint128_t x62 = (((uint128_t)0x200000000000 * x60) + x61);
+ uint64_t x63 = (uint64_t) (x62 >> 0x2d);
+ uint64_t x64 = ((uint64_t)x62 & 0x1fffffffffff);
+ uint128_t x65 = ((x58 + x52) + x63);
+ uint64_t x66 = (uint64_t) (x65 >> 0x2d);
+ uint64_t x67 = ((uint64_t)x65 & 0x1fffffffffff);
+ uint128_t x68 = (x57 + x63);
+ uint64_t x69 = (uint64_t) (x68 >> 0x2d);
+ uint64_t x70 = ((uint64_t)x68 & 0x1fffffffffff);
+ uint128_t x71 = (x66 + x51);
+ uint64_t x72 = (uint64_t) (x71 >> 0x2d);
+ uint64_t x73 = ((uint64_t)x71 & 0x1fffffffffff);
+ uint128_t x74 = (x69 + x56);
+ uint64_t x75 = (uint64_t) (x74 >> 0x2d);
+ uint64_t x76 = ((uint64_t)x74 & 0x1fffffffffff);
+ uint128_t x77 = (x72 + x50);
+ uint64_t x78 = (uint64_t) (x77 >> 0x2d);
+ uint64_t x79 = ((uint64_t)x77 & 0x1fffffffffff);
+ uint128_t x80 = (x75 + x55);
+ uint64_t x81 = (uint64_t) (x80 >> 0x2d);
+ uint64_t x82 = ((uint64_t)x80 & 0x1fffffffffff);
+ uint128_t x83 = (x78 + x49);
+ uint64_t x84 = (uint64_t) (x83 >> 0x2d);
+ uint64_t x85 = ((uint64_t)x83 & 0x1fffffffffff);
+ uint128_t x86 = (x81 + x54);
+ uint64_t x87 = (uint64_t) (x86 >> 0x2d);
+ uint64_t x88 = ((uint64_t)x86 & 0x1fffffffffff);
+ uint64_t x89 = (x84 + x64);
+ uint64_t x90 = (x89 >> 0x2d);
+ uint64_t x91 = (x89 & 0x1fffffffffff);
+ uint64_t x92 = (x87 + x59);
+ uint64_t x93 = (x92 >> 0x2d);
+ uint64_t x94 = (x92 & 0x1fffffffffff);
+ uint64_t x95 = ((0x200000000000 * x90) + x91);
+ uint64_t x96 = (x95 >> 0x2d);
+ uint64_t x97 = (x95 & 0x1fffffffffff);
+ uint64_t x98 = ((x93 + x67) + x96);
+ uint64_t x99 = (x98 >> 0x2d);
+ uint64_t x100 = (x98 & 0x1fffffffffff);
+ uint64_t x101 = (x70 + x96);
+ uint64_t x102 = (x101 >> 0x2d);
+ uint64_t x103 = (x101 & 0x1fffffffffff);
+ return (Return x97, Return x85, Return x79, (x99 + x73), Return x100, Return x94, Return x88, Return x82, (x102 + x76), Return x103))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.c b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.c
index 88b0024e4..3293fc641 100644
--- a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.c
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.c
@@ -24,7 +24,7 @@ static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[1
out[2] = ((0x3ffffffffffe + x9) - x27);
out[3] = ((0x3ffffffffffe + x11) - x29);
out[4] = ((0x3ffffffffffe + x13) - x31);
- out[5] = ((Const 70368744177660 + x15) - x33);
+ out[5] = ((0x3ffffffffffc + x15) - x33);
out[6] = ((0x3ffffffffffe + x17) - x35);
out[7] = ((0x3ffffffffffe + x19) - x37);
out[8] = ((0x3ffffffffffe + x21) - x39);
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.log b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.log
index 6265393a5..cf1401ce1 100644
--- a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x3ffffffffffe + x20) - x38), ((0x3ffffffffffe + x21) - x39), ((0x3ffffffffffe + x19) - x37), ((0x3ffffffffffe + x17) - x35), ((Const 70368744177660 + x15) - x33), ((0x3ffffffffffe + x13) - x31), ((0x3ffffffffffe + x11) - x29), ((0x3ffffffffffe + x9) - x27), ((0x3ffffffffffe + x7) - x25), ((0x3ffffffffffe + x5) - x23)))
+ (((0x3ffffffffffe + x20) - x38), ((0x3ffffffffffe + x21) - x39), ((0x3ffffffffffe + x19) - x37), ((0x3ffffffffffe + x17) - x35), ((0x3ffffffffffc + x15) - x33), ((0x3ffffffffffe + x13) - x31), ((0x3ffffffffffe + x11) - x29), ((0x3ffffffffffe + x9) - x27), ((0x3ffffffffffe + x7) - x25), ((0x3ffffffffffe + x5) - x23)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e452m3_9limbs/fesub.c b/src/Specific/solinas64_2e452m3_9limbs/fesub.c
index 6069ac9cf..c0c234ca7 100644
--- a/src/Specific/solinas64_2e452m3_9limbs/fesub.c
+++ b/src/Specific/solinas64_2e452m3_9limbs/fesub.c
@@ -17,7 +17,7 @@ static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9])
{ const uint64_t x25 = in2[2];
{ const uint64_t x23 = in2[1];
{ const uint64_t x21 = in2[0];
- out[0] = ((Const 4503599627370490 + x5) - x21);
+ out[0] = ((0xffffffffffffa + x5) - x21);
out[1] = ((0x7fffffffffffe + x7) - x23);
out[2] = ((0x7fffffffffffe + x9) - x25);
out[3] = ((0x7fffffffffffe + x11) - x27);
diff --git a/src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.log b/src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.log
index 1770af73b..a139ce8c9 100644
--- a/src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x7fffffffffffe + x18) - x34), ((0x7fffffffffffe + x19) - x35), ((0x7fffffffffffe + x17) - x33), ((0x7fffffffffffe + x15) - x31), ((0xffffffffffffe + x13) - x29), ((0x7fffffffffffe + x11) - x27), ((0x7fffffffffffe + x9) - x25), ((0x7fffffffffffe + x7) - x23), ((Const 4503599627370490 + x5) - x21)))
+ (((0x7fffffffffffe + x18) - x34), ((0x7fffffffffffe + x19) - x35), ((0x7fffffffffffe + x17) - x33), ((0x7fffffffffffe + x15) - x31), ((0xffffffffffffe + x13) - x29), ((0x7fffffffffffe + x11) - x27), ((0x7fffffffffffe + x9) - x25), ((0x7fffffffffffe + x7) - x23), ((0xffffffffffffa + x5) - x21)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e452m3_9limbs/freeze.c b/src/Specific/solinas64_2e452m3_9limbs/freeze.c
index 4b47f3146..cb7438647 100644
--- a/src/Specific/solinas64_2e452m3_9limbs/freeze.c
+++ b/src/Specific/solinas64_2e452m3_9limbs/freeze.c
@@ -8,7 +8,7 @@ static void freeze(uint64_t out[9], const uint64_t in1[9]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x18; uint8_t x19 = _subborrow_u51(0x0, x2, Const 2251799813685245, &x18);
+ { uint64_t x18; uint8_t x19 = _subborrow_u51(0x0, x2, 0x7fffffffffffd, &x18);
{ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffffffffffff);
{ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffffffffffff);
{ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3ffffffffffff);
@@ -18,7 +18,7 @@ static void freeze(uint64_t out[9], const uint64_t in1[9]) {
{ uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffffffffff);
{ uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3ffffffffffff);
{ uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- { uint64_t x45 = (x44 & Const 2251799813685245);
+ { uint64_t x45 = (x44 & 0x7fffffffffffd);
{ uint64_t x47; uint8_t x48 = _addcarryx_u51(0x0, x18, x45, &x47);
{ uint64_t x49 = (x44 & 0x3ffffffffffff);
{ uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
diff --git a/src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.log b/src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.log
index 3c299782e..223f72dd4 100644
--- a/src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x18, uint8_t x19 = subborrow_u51(0x0, x2, Const 2251799813685245);
+ uint64_t x18, uint8_t x19 = subborrow_u51(0x0, x2, 0x7fffffffffffd);
uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffffffffffff);
uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffffffffffff);
uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3ffffffffffff);
@@ -12,7 +12,7 @@ Interp-η
uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffffffffff);
uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3ffffffffffff);
uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- uint64_t x45 = (x44 & Const 2251799813685245);
+ uint64_t x45 = (x44 & 0x7fffffffffffd);
uint64_t x47, uint8_t x48 = addcarryx_u51(0x0, x18, x45);
uint64_t x49 = (x44 & 0x3ffffffffffff);
uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
diff --git a/src/Specific/solinas64_2e468m17_9limbs/femul.c b/src/Specific/solinas64_2e468m17_9limbs/femul.c
new file mode 100644
index 000000000..f7bb09511
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ { uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
+ { uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x11 * ((uint128_t)x18 * x34)));
+ { uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + (0x11 * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
+ { uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x11 * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
+ { uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x11 * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
+ { uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + (0x11 * (((uint128_t)x13 * x34) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + ((uint128_t)x18 * x29)))))));
+ { uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + (0x11 * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
+ { uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x11 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
+ { uint128_t x44 = (((uint128_t)x5 * x21) + (0x11 * (((uint128_t)x7 * x34) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x18 * x23))))))))));
+ { uint64_t x45 = (uint64_t) (x44 >> 0x34);
+ { uint64_t x46 = ((uint64_t)x44 & 0xfffffffffffff);
+ { uint128_t x47 = (x45 + x43);
+ { uint64_t x48 = (uint64_t) (x47 >> 0x34);
+ { uint64_t x49 = ((uint64_t)x47 & 0xfffffffffffff);
+ { uint128_t x50 = (x48 + x42);
+ { uint64_t x51 = (uint64_t) (x50 >> 0x34);
+ { uint64_t x52 = ((uint64_t)x50 & 0xfffffffffffff);
+ { uint128_t x53 = (x51 + x41);
+ { uint64_t x54 = (uint64_t) (x53 >> 0x34);
+ { uint64_t x55 = ((uint64_t)x53 & 0xfffffffffffff);
+ { uint128_t x56 = (x54 + x40);
+ { uint64_t x57 = (uint64_t) (x56 >> 0x34);
+ { uint64_t x58 = ((uint64_t)x56 & 0xfffffffffffff);
+ { uint128_t x59 = (x57 + x39);
+ { uint64_t x60 = (uint64_t) (x59 >> 0x34);
+ { uint64_t x61 = ((uint64_t)x59 & 0xfffffffffffff);
+ { uint128_t x62 = (x60 + x38);
+ { uint64_t x63 = (uint64_t) (x62 >> 0x34);
+ { uint64_t x64 = ((uint64_t)x62 & 0xfffffffffffff);
+ { uint128_t x65 = (x63 + x37);
+ { uint64_t x66 = (uint64_t) (x65 >> 0x34);
+ { uint64_t x67 = ((uint64_t)x65 & 0xfffffffffffff);
+ { uint128_t x68 = (x66 + x36);
+ { uint64_t x69 = (uint64_t) (x68 >> 0x34);
+ { uint64_t x70 = ((uint64_t)x68 & 0xfffffffffffff);
+ { uint64_t x71 = (x46 + (0x11 * x69));
+ { uint64_t x72 = (x71 >> 0x34);
+ { uint64_t x73 = (x71 & 0xfffffffffffff);
+ { uint64_t x74 = (x72 + x49);
+ { uint64_t x75 = (x74 >> 0x34);
+ { uint64_t x76 = (x74 & 0xfffffffffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e468m17_9limbs/femulDisplay.log b/src/Specific/solinas64_2e468m17_9limbs/femulDisplay.log
new file mode 100644
index 000000000..9fd28fcea
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
+ uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x11 * ((uint128_t)x18 * x34)));
+ uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + (0x11 * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
+ uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x11 * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
+ uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x11 * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
+ uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + (0x11 * (((uint128_t)x13 * x34) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + ((uint128_t)x18 * x29)))))));
+ uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + (0x11 * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
+ uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x11 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
+ uint128_t x44 = (((uint128_t)x5 * x21) + (0x11 * (((uint128_t)x7 * x34) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x18 * x23))))))))));
+ uint64_t x45 = (uint64_t) (x44 >> 0x34);
+ uint64_t x46 = ((uint64_t)x44 & 0xfffffffffffff);
+ uint128_t x47 = (x45 + x43);
+ uint64_t x48 = (uint64_t) (x47 >> 0x34);
+ uint64_t x49 = ((uint64_t)x47 & 0xfffffffffffff);
+ uint128_t x50 = (x48 + x42);
+ uint64_t x51 = (uint64_t) (x50 >> 0x34);
+ uint64_t x52 = ((uint64_t)x50 & 0xfffffffffffff);
+ uint128_t x53 = (x51 + x41);
+ uint64_t x54 = (uint64_t) (x53 >> 0x34);
+ uint64_t x55 = ((uint64_t)x53 & 0xfffffffffffff);
+ uint128_t x56 = (x54 + x40);
+ uint64_t x57 = (uint64_t) (x56 >> 0x34);
+ uint64_t x58 = ((uint64_t)x56 & 0xfffffffffffff);
+ uint128_t x59 = (x57 + x39);
+ uint64_t x60 = (uint64_t) (x59 >> 0x34);
+ uint64_t x61 = ((uint64_t)x59 & 0xfffffffffffff);
+ uint128_t x62 = (x60 + x38);
+ uint64_t x63 = (uint64_t) (x62 >> 0x34);
+ uint64_t x64 = ((uint64_t)x62 & 0xfffffffffffff);
+ uint128_t x65 = (x63 + x37);
+ uint64_t x66 = (uint64_t) (x65 >> 0x34);
+ uint64_t x67 = ((uint64_t)x65 & 0xfffffffffffff);
+ uint128_t x68 = (x66 + x36);
+ uint64_t x69 = (uint64_t) (x68 >> 0x34);
+ uint64_t x70 = ((uint64_t)x68 & 0xfffffffffffff);
+ uint64_t x71 = (x46 + (0x11 * x69));
+ uint64_t x72 = (x71 >> 0x34);
+ uint64_t x73 = (x71 & 0xfffffffffffff);
+ uint64_t x74 = (x72 + x49);
+ uint64_t x75 = (x74 >> 0x34);
+ uint64_t x76 = (x74 & 0xfffffffffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesquare.c b/src/Specific/solinas64_2e468m17_9limbs/fesquare.c
new file mode 100644
index 000000000..bcfb518a4
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
+ { const uint64_t x15 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
+ { uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((uint128_t)x15 * x15)));
+ { uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
+ { uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
+ { uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
+ { uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x15) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((uint128_t)x15 * x10)))))));
+ { uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
+ { uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
+ { uint128_t x25 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x15) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + ((uint128_t)x15 * x4))))))))));
+ { uint64_t x26 = (uint64_t) (x25 >> 0x34);
+ { uint64_t x27 = ((uint64_t)x25 & 0xfffffffffffff);
+ { uint128_t x28 = (x26 + x24);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x34);
+ { uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
+ { uint128_t x31 = (x29 + x23);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x34);
+ { uint64_t x33 = ((uint64_t)x31 & 0xfffffffffffff);
+ { uint128_t x34 = (x32 + x22);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x34);
+ { uint64_t x36 = ((uint64_t)x34 & 0xfffffffffffff);
+ { uint128_t x37 = (x35 + x21);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x34);
+ { uint64_t x39 = ((uint64_t)x37 & 0xfffffffffffff);
+ { uint128_t x40 = (x38 + x20);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x34);
+ { uint64_t x42 = ((uint64_t)x40 & 0xfffffffffffff);
+ { uint128_t x43 = (x41 + x19);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x34);
+ { uint64_t x45 = ((uint64_t)x43 & 0xfffffffffffff);
+ { uint128_t x46 = (x44 + x18);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x34);
+ { uint64_t x48 = ((uint64_t)x46 & 0xfffffffffffff);
+ { uint128_t x49 = (x47 + x17);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x34);
+ { uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
+ { uint64_t x52 = (x27 + (0x11 * x50));
+ { uint64_t x53 = (x52 >> 0x34);
+ { uint64_t x54 = (x52 & 0xfffffffffffff);
+ { uint64_t x55 = (x53 + x30);
+ { uint64_t x56 = (x55 >> 0x34);
+ { uint64_t x57 = (x55 & 0xfffffffffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.log b/src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..104cc8b1c
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
+ uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((uint128_t)x15 * x15)));
+ uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
+ uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
+ uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
+ uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x15) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((uint128_t)x15 * x10)))))));
+ uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
+ uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
+ uint128_t x25 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x15) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + ((uint128_t)x15 * x4))))))))));
+ uint64_t x26 = (uint64_t) (x25 >> 0x34);
+ uint64_t x27 = ((uint64_t)x25 & 0xfffffffffffff);
+ uint128_t x28 = (x26 + x24);
+ uint64_t x29 = (uint64_t) (x28 >> 0x34);
+ uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
+ uint128_t x31 = (x29 + x23);
+ uint64_t x32 = (uint64_t) (x31 >> 0x34);
+ uint64_t x33 = ((uint64_t)x31 & 0xfffffffffffff);
+ uint128_t x34 = (x32 + x22);
+ uint64_t x35 = (uint64_t) (x34 >> 0x34);
+ uint64_t x36 = ((uint64_t)x34 & 0xfffffffffffff);
+ uint128_t x37 = (x35 + x21);
+ uint64_t x38 = (uint64_t) (x37 >> 0x34);
+ uint64_t x39 = ((uint64_t)x37 & 0xfffffffffffff);
+ uint128_t x40 = (x38 + x20);
+ uint64_t x41 = (uint64_t) (x40 >> 0x34);
+ uint64_t x42 = ((uint64_t)x40 & 0xfffffffffffff);
+ uint128_t x43 = (x41 + x19);
+ uint64_t x44 = (uint64_t) (x43 >> 0x34);
+ uint64_t x45 = ((uint64_t)x43 & 0xfffffffffffff);
+ uint128_t x46 = (x44 + x18);
+ uint64_t x47 = (uint64_t) (x46 >> 0x34);
+ uint64_t x48 = ((uint64_t)x46 & 0xfffffffffffff);
+ uint128_t x49 = (x47 + x17);
+ uint64_t x50 = (uint64_t) (x49 >> 0x34);
+ uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
+ uint64_t x52 = (x27 + (0x11 * x50));
+ uint64_t x53 = (x52 >> 0x34);
+ uint64_t x54 = (x52 & 0xfffffffffffff);
+ uint64_t x55 = (x53 + x30);
+ uint64_t x56 = (x55 >> 0x34);
+ uint64_t x57 = (x55 & 0xfffffffffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesub.c b/src/Specific/solinas64_2e468m17_9limbs/fesub.c
new file mode 100644
index 000000000..c2dfee6a0
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ out[0] = ((0x1fffffffffffde + x5) - x21);
+ out[1] = ((0x1ffffffffffffe + x7) - x23);
+ out[2] = ((0x1ffffffffffffe + x9) - x25);
+ out[3] = ((0x1ffffffffffffe + x11) - x27);
+ out[4] = ((0x1ffffffffffffe + x13) - x29);
+ out[5] = ((0x1ffffffffffffe + x15) - x31);
+ out[6] = ((0x1ffffffffffffe + x17) - x33);
+ out[7] = ((0x1ffffffffffffe + x19) - x35);
+ out[8] = ((0x1ffffffffffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.log b/src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..6a646cb64
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x1ffffffffffffe + x18) - x34), ((0x1ffffffffffffe + x19) - x35), ((0x1ffffffffffffe + x17) - x33), ((0x1ffffffffffffe + x15) - x31), ((0x1ffffffffffffe + x13) - x29), ((0x1ffffffffffffe + x11) - x27), ((0x1ffffffffffffe + x9) - x25), ((0x1ffffffffffffe + x7) - x23), ((0x1fffffffffffde + x5) - x21)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17_9limbs/freeze.c b/src/Specific/solinas64_2e468m17_9limbs/freeze.c
new file mode 100644
index 000000000..5e46faf8c
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint64_t out[9], const uint64_t in1[9]) {
+ { const uint64_t x15 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffef);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0xfffffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0xfffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0xfffffffffffff);
+ { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0xfffffffffffff);
+ { uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0xfffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0xfffffffffffff);
+ { uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0xfffffffffffff);
+ { uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0xfffffffffffff);
+ { uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
+ { uint64_t x45 = (x44 & 0xfffffffffffef);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint64_t x49 = (x44 & 0xfffffffffffff);
+ { uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint64_t x53 = (x44 & 0xfffffffffffff);
+ { uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint64_t x57 = (x44 & 0xfffffffffffff);
+ { uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint64_t x61 = (x44 & 0xfffffffffffff);
+ { uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint64_t x65 = (x44 & 0xfffffffffffff);
+ { uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint64_t x69 = (x44 & 0xfffffffffffff);
+ { uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint64_t x73 = (x44 & 0xfffffffffffff);
+ { uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint64_t x77 = (x44 & 0xfffffffffffff);
+ { uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.log b/src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..a1b1d7d00
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffef);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0xfffffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0xfffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0xfffffffffffff);
+ uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0xfffffffffffff);
+ uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0xfffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0xfffffffffffff);
+ uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0xfffffffffffff);
+ uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0xfffffffffffff);
+ uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
+ uint64_t x45 = (x44 & 0xfffffffffffef);
+ uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint64_t x49 = (x44 & 0xfffffffffffff);
+ uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint64_t x53 = (x44 & 0xfffffffffffff);
+ uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint64_t x57 = (x44 & 0xfffffffffffff);
+ uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint64_t x61 = (x44 & 0xfffffffffffff);
+ uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint64_t x65 = (x44 & 0xfffffffffffff);
+ uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint64_t x69 = (x44 & 0xfffffffffffff);
+ uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint64_t x73 = (x44 & 0xfffffffffffff);
+ uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint64_t x77 = (x44 & 0xfffffffffffff);
+ uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.c b/src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.c
new file mode 100644
index 000000000..df991e375
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.log b/src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..04176128e
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/femul.c b/src/Specific/solinas64_2e480m2e240m1_10limbs/femul.c
new file mode 100644
index 000000000..6ff5fd47c
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/femul.c
@@ -0,0 +1,97 @@
+static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ { uint128_t x40 = (((uint128_t)(x13 + x20) * (x31 + x38)) - ((uint128_t)x13 * x31));
+ { uint128_t x41 = ((((uint128_t)(x11 + x21) * (x31 + x38)) + ((uint128_t)(x13 + x20) * (x29 + x39))) - (((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)));
+ { uint128_t x42 = ((((uint128_t)(x9 + x19) * (x31 + x38)) + (((uint128_t)(x11 + x21) * (x29 + x39)) + ((uint128_t)(x13 + x20) * (x27 + x37)))) - (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))));
+ { uint128_t x43 = ((((uint128_t)(x7 + x17) * (x31 + x38)) + (((uint128_t)(x9 + x19) * (x29 + x39)) + (((uint128_t)(x11 + x21) * (x27 + x37)) + ((uint128_t)(x13 + x20) * (x25 + x35))))) - (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))));
+ { uint128_t x44 = ((((uint128_t)(x5 + x15) * (x31 + x38)) + (((uint128_t)(x7 + x17) * (x29 + x39)) + (((uint128_t)(x9 + x19) * (x27 + x37)) + (((uint128_t)(x11 + x21) * (x25 + x35)) + ((uint128_t)(x13 + x20) * (x23 + x33)))))) - (((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))));
+ { uint128_t x45 = ((((uint128_t)(x5 + x15) * (x29 + x39)) + (((uint128_t)(x7 + x17) * (x27 + x37)) + (((uint128_t)(x9 + x19) * (x25 + x35)) + ((uint128_t)(x11 + x21) * (x23 + x33))))) - (((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))));
+ { uint128_t x46 = ((((uint128_t)(x5 + x15) * (x27 + x37)) + (((uint128_t)(x7 + x17) * (x25 + x35)) + ((uint128_t)(x9 + x19) * (x23 + x33)))) - (((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))));
+ { uint128_t x47 = ((((uint128_t)(x5 + x15) * (x25 + x35)) + ((uint128_t)(x7 + x17) * (x23 + x33))) - (((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)));
+ { uint128_t x48 = (((uint128_t)(x5 + x15) * (x23 + x33)) - ((uint128_t)x5 * x23));
+ { uint128_t x49 = (((((uint128_t)x13 * x31) + ((uint128_t)x20 * x38)) + x45) + x40);
+ { uint128_t x50 = ((((((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)) + (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))) + x46) + x41);
+ { uint128_t x51 = ((((((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))) + (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))) + x47) + x42);
+ { uint128_t x52 = ((((((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))) + (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))) + x48) + x43);
+ { uint128_t x53 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33))))));
+ { uint128_t x54 = (((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + ((uint128_t)x21 * x33))))) + x40);
+ { uint128_t x55 = (((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + ((uint128_t)x19 * x33)))) + x41);
+ { uint128_t x56 = (((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (((uint128_t)x15 * x35) + ((uint128_t)x17 * x33))) + x42);
+ { uint128_t x57 = ((((uint128_t)x5 * x23) + ((uint128_t)x15 * x33)) + x43);
+ { uint64_t x58 = (uint64_t) (x53 >> 0x30);
+ { uint64_t x59 = ((uint64_t)x53 & 0xffffffffffff);
+ { uint64_t x60 = (uint64_t) (x44 >> 0x30);
+ { uint64_t x61 = ((uint64_t)x44 & 0xffffffffffff);
+ { uint128_t x62 = (((uint128_t)0x1000000000000 * x60) + x61);
+ { uint64_t x63 = (uint64_t) (x62 >> 0x30);
+ { uint64_t x64 = ((uint64_t)x62 & 0xffffffffffff);
+ { uint128_t x65 = ((x58 + x52) + x63);
+ { uint64_t x66 = (uint64_t) (x65 >> 0x30);
+ { uint64_t x67 = ((uint64_t)x65 & 0xffffffffffff);
+ { uint128_t x68 = (x57 + x63);
+ { uint64_t x69 = (uint64_t) (x68 >> 0x30);
+ { uint64_t x70 = ((uint64_t)x68 & 0xffffffffffff);
+ { uint128_t x71 = (x66 + x51);
+ { uint64_t x72 = (uint64_t) (x71 >> 0x30);
+ { uint64_t x73 = ((uint64_t)x71 & 0xffffffffffff);
+ { uint128_t x74 = (x69 + x56);
+ { uint64_t x75 = (uint64_t) (x74 >> 0x30);
+ { uint64_t x76 = ((uint64_t)x74 & 0xffffffffffff);
+ { uint128_t x77 = (x72 + x50);
+ { uint64_t x78 = (uint64_t) (x77 >> 0x30);
+ { uint64_t x79 = ((uint64_t)x77 & 0xffffffffffff);
+ { uint128_t x80 = (x75 + x55);
+ { uint64_t x81 = (uint64_t) (x80 >> 0x30);
+ { uint64_t x82 = ((uint64_t)x80 & 0xffffffffffff);
+ { uint128_t x83 = (x78 + x49);
+ { uint64_t x84 = (uint64_t) (x83 >> 0x30);
+ { uint64_t x85 = ((uint64_t)x83 & 0xffffffffffff);
+ { uint128_t x86 = (x81 + x54);
+ { uint64_t x87 = (uint64_t) (x86 >> 0x30);
+ { uint64_t x88 = ((uint64_t)x86 & 0xffffffffffff);
+ { uint64_t x89 = (x84 + x64);
+ { uint64_t x90 = (x89 >> 0x30);
+ { uint64_t x91 = (x89 & 0xffffffffffff);
+ { uint64_t x92 = (x87 + x59);
+ { uint64_t x93 = (x92 >> 0x30);
+ { uint64_t x94 = (x92 & 0xffffffffffff);
+ { uint64_t x95 = ((0x1000000000000 * x90) + x91);
+ { uint64_t x96 = (x95 >> 0x30);
+ { uint64_t x97 = (x95 & 0xffffffffffff);
+ { uint64_t x98 = ((x93 + x67) + x96);
+ { uint64_t x99 = (x98 >> 0x30);
+ { uint64_t x100 = (x98 & 0xffffffffffff);
+ { uint64_t x101 = (x70 + x96);
+ { uint64_t x102 = (x101 >> 0x30);
+ { uint64_t x103 = (x101 & 0xffffffffffff);
+ out[0] = x103;
+ out[1] = (x102 + x76);
+ out[2] = x82;
+ out[3] = x88;
+ out[4] = x94;
+ out[5] = x100;
+ out[6] = (x99 + x73);
+ out[7] = x79;
+ out[8] = x85;
+ out[9] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.log b/src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.log
new file mode 100644
index 000000000..8f3c49a57
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.log
@@ -0,0 +1,71 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint128_t x40 = (((uint128_t)(x13 + x20) * (x31 + x38)) - ((uint128_t)x13 * x31));
+ uint128_t x41 = ((((uint128_t)(x11 + x21) * (x31 + x38)) + ((uint128_t)(x13 + x20) * (x29 + x39))) - (((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)));
+ uint128_t x42 = ((((uint128_t)(x9 + x19) * (x31 + x38)) + (((uint128_t)(x11 + x21) * (x29 + x39)) + ((uint128_t)(x13 + x20) * (x27 + x37)))) - (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))));
+ uint128_t x43 = ((((uint128_t)(x7 + x17) * (x31 + x38)) + (((uint128_t)(x9 + x19) * (x29 + x39)) + (((uint128_t)(x11 + x21) * (x27 + x37)) + ((uint128_t)(x13 + x20) * (x25 + x35))))) - (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))));
+ uint128_t x44 = ((((uint128_t)(x5 + x15) * (x31 + x38)) + (((uint128_t)(x7 + x17) * (x29 + x39)) + (((uint128_t)(x9 + x19) * (x27 + x37)) + (((uint128_t)(x11 + x21) * (x25 + x35)) + ((uint128_t)(x13 + x20) * (x23 + x33)))))) - (((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))));
+ uint128_t x45 = ((((uint128_t)(x5 + x15) * (x29 + x39)) + (((uint128_t)(x7 + x17) * (x27 + x37)) + (((uint128_t)(x9 + x19) * (x25 + x35)) + ((uint128_t)(x11 + x21) * (x23 + x33))))) - (((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))));
+ uint128_t x46 = ((((uint128_t)(x5 + x15) * (x27 + x37)) + (((uint128_t)(x7 + x17) * (x25 + x35)) + ((uint128_t)(x9 + x19) * (x23 + x33)))) - (((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))));
+ uint128_t x47 = ((((uint128_t)(x5 + x15) * (x25 + x35)) + ((uint128_t)(x7 + x17) * (x23 + x33))) - (((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)));
+ uint128_t x48 = (((uint128_t)(x5 + x15) * (x23 + x33)) - ((uint128_t)x5 * x23));
+ uint128_t x49 = (((((uint128_t)x13 * x31) + ((uint128_t)x20 * x38)) + x45) + x40);
+ uint128_t x50 = ((((((uint128_t)x11 * x31) + ((uint128_t)x13 * x29)) + (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))) + x46) + x41);
+ uint128_t x51 = ((((((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + ((uint128_t)x13 * x27))) + (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))) + x47) + x42);
+ uint128_t x52 = ((((((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25)))) + (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))) + x48) + x43);
+ uint128_t x53 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33))))));
+ uint128_t x54 = (((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + ((uint128_t)x21 * x33))))) + x40);
+ uint128_t x55 = (((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + ((uint128_t)x19 * x33)))) + x41);
+ uint128_t x56 = (((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (((uint128_t)x15 * x35) + ((uint128_t)x17 * x33))) + x42);
+ uint128_t x57 = ((((uint128_t)x5 * x23) + ((uint128_t)x15 * x33)) + x43);
+ uint64_t x58 = (uint64_t) (x53 >> 0x30);
+ uint64_t x59 = ((uint64_t)x53 & 0xffffffffffff);
+ uint64_t x60 = (uint64_t) (x44 >> 0x30);
+ uint64_t x61 = ((uint64_t)x44 & 0xffffffffffff);
+ uint128_t x62 = (((uint128_t)0x1000000000000 * x60) + x61);
+ uint64_t x63 = (uint64_t) (x62 >> 0x30);
+ uint64_t x64 = ((uint64_t)x62 & 0xffffffffffff);
+ uint128_t x65 = ((x58 + x52) + x63);
+ uint64_t x66 = (uint64_t) (x65 >> 0x30);
+ uint64_t x67 = ((uint64_t)x65 & 0xffffffffffff);
+ uint128_t x68 = (x57 + x63);
+ uint64_t x69 = (uint64_t) (x68 >> 0x30);
+ uint64_t x70 = ((uint64_t)x68 & 0xffffffffffff);
+ uint128_t x71 = (x66 + x51);
+ uint64_t x72 = (uint64_t) (x71 >> 0x30);
+ uint64_t x73 = ((uint64_t)x71 & 0xffffffffffff);
+ uint128_t x74 = (x69 + x56);
+ uint64_t x75 = (uint64_t) (x74 >> 0x30);
+ uint64_t x76 = ((uint64_t)x74 & 0xffffffffffff);
+ uint128_t x77 = (x72 + x50);
+ uint64_t x78 = (uint64_t) (x77 >> 0x30);
+ uint64_t x79 = ((uint64_t)x77 & 0xffffffffffff);
+ uint128_t x80 = (x75 + x55);
+ uint64_t x81 = (uint64_t) (x80 >> 0x30);
+ uint64_t x82 = ((uint64_t)x80 & 0xffffffffffff);
+ uint128_t x83 = (x78 + x49);
+ uint64_t x84 = (uint64_t) (x83 >> 0x30);
+ uint64_t x85 = ((uint64_t)x83 & 0xffffffffffff);
+ uint128_t x86 = (x81 + x54);
+ uint64_t x87 = (uint64_t) (x86 >> 0x30);
+ uint64_t x88 = ((uint64_t)x86 & 0xffffffffffff);
+ uint64_t x89 = (x84 + x64);
+ uint64_t x90 = (x89 >> 0x30);
+ uint64_t x91 = (x89 & 0xffffffffffff);
+ uint64_t x92 = (x87 + x59);
+ uint64_t x93 = (x92 >> 0x30);
+ uint64_t x94 = (x92 & 0xffffffffffff);
+ uint64_t x95 = ((0x1000000000000 * x90) + x91);
+ uint64_t x96 = (x95 >> 0x30);
+ uint64_t x97 = (x95 & 0xffffffffffff);
+ uint64_t x98 = ((x93 + x67) + x96);
+ uint64_t x99 = (x98 >> 0x30);
+ uint64_t x100 = (x98 & 0xffffffffffff);
+ uint64_t x101 = (x70 + x96);
+ uint64_t x102 = (x101 >> 0x30);
+ uint64_t x103 = (x101 & 0xffffffffffff);
+ return (Return x97, Return x85, Return x79, (x99 + x73), Return x100, Return x94, Return x88, Return x82, (x102 + x76), Return x103))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.c b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.c
new file mode 100644
index 000000000..339a85a97
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.c
@@ -0,0 +1,87 @@
+static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x19 = (((uint128_t)(x10 + x17) * (x10 + x17)) - ((uint128_t)x10 * x10));
+ { uint128_t x20 = ((((uint128_t)(x8 + x18) * (x10 + x17)) + ((uint128_t)(x10 + x17) * (x8 + x18))) - (((uint128_t)x8 * x10) + ((uint128_t)x10 * x8)));
+ { uint128_t x21 = ((((uint128_t)(x6 + x16) * (x10 + x17)) + (((uint128_t)(x8 + x18) * (x8 + x18)) + ((uint128_t)(x10 + x17) * (x6 + x16)))) - (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + ((uint128_t)x10 * x6))));
+ { uint128_t x22 = ((((uint128_t)(x4 + x14) * (x10 + x17)) + (((uint128_t)(x6 + x16) * (x8 + x18)) + (((uint128_t)(x8 + x18) * (x6 + x16)) + ((uint128_t)(x10 + x17) * (x4 + x14))))) - (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x10 * x4)))));
+ { uint128_t x23 = ((((uint128_t)(x2 + x12) * (x10 + x17)) + (((uint128_t)(x4 + x14) * (x8 + x18)) + (((uint128_t)(x6 + x16) * (x6 + x16)) + (((uint128_t)(x8 + x18) * (x4 + x14)) + ((uint128_t)(x10 + x17) * (x2 + x12)))))) - (((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))));
+ { uint128_t x24 = ((((uint128_t)(x2 + x12) * (x8 + x18)) + (((uint128_t)(x4 + x14) * (x6 + x16)) + (((uint128_t)(x6 + x16) * (x4 + x14)) + ((uint128_t)(x8 + x18) * (x2 + x12))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
+ { uint128_t x25 = ((((uint128_t)(x2 + x12) * (x6 + x16)) + (((uint128_t)(x4 + x14) * (x4 + x14)) + ((uint128_t)(x6 + x16) * (x2 + x12)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
+ { uint128_t x26 = ((((uint128_t)(x2 + x12) * (x4 + x14)) + ((uint128_t)(x4 + x14) * (x2 + x12))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
+ { uint128_t x27 = (((uint128_t)(x2 + x12) * (x2 + x12)) - ((uint128_t)x2 * x2));
+ { uint128_t x28 = (((((uint128_t)x10 * x10) + ((uint128_t)x17 * x17)) + x24) + x19);
+ { uint128_t x29 = ((((((uint128_t)x8 * x10) + ((uint128_t)x10 * x8)) + (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))) + x25) + x20);
+ { uint128_t x30 = ((((((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + ((uint128_t)x10 * x6))) + (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))) + x26) + x21);
+ { uint128_t x31 = ((((((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x10 * x4)))) + (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))) + x27) + x22);
+ { uint128_t x32 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12))))));
+ { uint128_t x33 = (((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x18 * x12))))) + x19);
+ { uint128_t x34 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + ((uint128_t)x16 * x12)))) + x20);
+ { uint128_t x35 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x12 * x14) + ((uint128_t)x14 * x12))) + x21);
+ { uint128_t x36 = ((((uint128_t)x2 * x2) + ((uint128_t)x12 * x12)) + x22);
+ { uint64_t x37 = (uint64_t) (x32 >> 0x30);
+ { uint64_t x38 = ((uint64_t)x32 & 0xffffffffffff);
+ { uint64_t x39 = (uint64_t) (x23 >> 0x30);
+ { uint64_t x40 = ((uint64_t)x23 & 0xffffffffffff);
+ { uint128_t x41 = (((uint128_t)0x1000000000000 * x39) + x40);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x30);
+ { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffff);
+ { uint128_t x44 = ((x37 + x31) + x42);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x30);
+ { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffff);
+ { uint128_t x47 = (x36 + x42);
+ { uint64_t x48 = (uint64_t) (x47 >> 0x30);
+ { uint64_t x49 = ((uint64_t)x47 & 0xffffffffffff);
+ { uint128_t x50 = (x45 + x30);
+ { uint64_t x51 = (uint64_t) (x50 >> 0x30);
+ { uint64_t x52 = ((uint64_t)x50 & 0xffffffffffff);
+ { uint128_t x53 = (x48 + x35);
+ { uint64_t x54 = (uint64_t) (x53 >> 0x30);
+ { uint64_t x55 = ((uint64_t)x53 & 0xffffffffffff);
+ { uint128_t x56 = (x51 + x29);
+ { uint64_t x57 = (uint64_t) (x56 >> 0x30);
+ { uint64_t x58 = ((uint64_t)x56 & 0xffffffffffff);
+ { uint128_t x59 = (x54 + x34);
+ { uint64_t x60 = (uint64_t) (x59 >> 0x30);
+ { uint64_t x61 = ((uint64_t)x59 & 0xffffffffffff);
+ { uint128_t x62 = (x57 + x28);
+ { uint64_t x63 = (uint64_t) (x62 >> 0x30);
+ { uint64_t x64 = ((uint64_t)x62 & 0xffffffffffff);
+ { uint128_t x65 = (x60 + x33);
+ { uint64_t x66 = (uint64_t) (x65 >> 0x30);
+ { uint64_t x67 = ((uint64_t)x65 & 0xffffffffffff);
+ { uint64_t x68 = (x63 + x43);
+ { uint64_t x69 = (x68 >> 0x30);
+ { uint64_t x70 = (x68 & 0xffffffffffff);
+ { uint64_t x71 = (x66 + x38);
+ { uint64_t x72 = (x71 >> 0x30);
+ { uint64_t x73 = (x71 & 0xffffffffffff);
+ { uint64_t x74 = ((0x1000000000000 * x69) + x70);
+ { uint64_t x75 = (x74 >> 0x30);
+ { uint64_t x76 = (x74 & 0xffffffffffff);
+ { uint64_t x77 = ((x72 + x46) + x75);
+ { uint64_t x78 = (x77 >> 0x30);
+ { uint64_t x79 = (x77 & 0xffffffffffff);
+ { uint64_t x80 = (x49 + x75);
+ { uint64_t x81 = (x80 >> 0x30);
+ { uint64_t x82 = (x80 & 0xffffffffffff);
+ out[0] = x82;
+ out[1] = (x81 + x55);
+ out[2] = x61;
+ out[3] = x67;
+ out[4] = x73;
+ out[5] = x79;
+ out[6] = (x78 + x52);
+ out[7] = x58;
+ out[8] = x64;
+ out[9] = x76;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.log b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..28aa3ebcf
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.log
@@ -0,0 +1,71 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x19 = (((uint128_t)(x10 + x17) * (x10 + x17)) - ((uint128_t)x10 * x10));
+ uint128_t x20 = ((((uint128_t)(x8 + x18) * (x10 + x17)) + ((uint128_t)(x10 + x17) * (x8 + x18))) - (((uint128_t)x8 * x10) + ((uint128_t)x10 * x8)));
+ uint128_t x21 = ((((uint128_t)(x6 + x16) * (x10 + x17)) + (((uint128_t)(x8 + x18) * (x8 + x18)) + ((uint128_t)(x10 + x17) * (x6 + x16)))) - (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + ((uint128_t)x10 * x6))));
+ uint128_t x22 = ((((uint128_t)(x4 + x14) * (x10 + x17)) + (((uint128_t)(x6 + x16) * (x8 + x18)) + (((uint128_t)(x8 + x18) * (x6 + x16)) + ((uint128_t)(x10 + x17) * (x4 + x14))))) - (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x10 * x4)))));
+ uint128_t x23 = ((((uint128_t)(x2 + x12) * (x10 + x17)) + (((uint128_t)(x4 + x14) * (x8 + x18)) + (((uint128_t)(x6 + x16) * (x6 + x16)) + (((uint128_t)(x8 + x18) * (x4 + x14)) + ((uint128_t)(x10 + x17) * (x2 + x12)))))) - (((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))));
+ uint128_t x24 = ((((uint128_t)(x2 + x12) * (x8 + x18)) + (((uint128_t)(x4 + x14) * (x6 + x16)) + (((uint128_t)(x6 + x16) * (x4 + x14)) + ((uint128_t)(x8 + x18) * (x2 + x12))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
+ uint128_t x25 = ((((uint128_t)(x2 + x12) * (x6 + x16)) + (((uint128_t)(x4 + x14) * (x4 + x14)) + ((uint128_t)(x6 + x16) * (x2 + x12)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
+ uint128_t x26 = ((((uint128_t)(x2 + x12) * (x4 + x14)) + ((uint128_t)(x4 + x14) * (x2 + x12))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
+ uint128_t x27 = (((uint128_t)(x2 + x12) * (x2 + x12)) - ((uint128_t)x2 * x2));
+ uint128_t x28 = (((((uint128_t)x10 * x10) + ((uint128_t)x17 * x17)) + x24) + x19);
+ uint128_t x29 = ((((((uint128_t)x8 * x10) + ((uint128_t)x10 * x8)) + (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))) + x25) + x20);
+ uint128_t x30 = ((((((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + ((uint128_t)x10 * x6))) + (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))) + x26) + x21);
+ uint128_t x31 = ((((((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x10 * x4)))) + (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))) + x27) + x22);
+ uint128_t x32 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12))))));
+ uint128_t x33 = (((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x18 * x12))))) + x19);
+ uint128_t x34 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + ((uint128_t)x16 * x12)))) + x20);
+ uint128_t x35 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x12 * x14) + ((uint128_t)x14 * x12))) + x21);
+ uint128_t x36 = ((((uint128_t)x2 * x2) + ((uint128_t)x12 * x12)) + x22);
+ uint64_t x37 = (uint64_t) (x32 >> 0x30);
+ uint64_t x38 = ((uint64_t)x32 & 0xffffffffffff);
+ uint64_t x39 = (uint64_t) (x23 >> 0x30);
+ uint64_t x40 = ((uint64_t)x23 & 0xffffffffffff);
+ uint128_t x41 = (((uint128_t)0x1000000000000 * x39) + x40);
+ uint64_t x42 = (uint64_t) (x41 >> 0x30);
+ uint64_t x43 = ((uint64_t)x41 & 0xffffffffffff);
+ uint128_t x44 = ((x37 + x31) + x42);
+ uint64_t x45 = (uint64_t) (x44 >> 0x30);
+ uint64_t x46 = ((uint64_t)x44 & 0xffffffffffff);
+ uint128_t x47 = (x36 + x42);
+ uint64_t x48 = (uint64_t) (x47 >> 0x30);
+ uint64_t x49 = ((uint64_t)x47 & 0xffffffffffff);
+ uint128_t x50 = (x45 + x30);
+ uint64_t x51 = (uint64_t) (x50 >> 0x30);
+ uint64_t x52 = ((uint64_t)x50 & 0xffffffffffff);
+ uint128_t x53 = (x48 + x35);
+ uint64_t x54 = (uint64_t) (x53 >> 0x30);
+ uint64_t x55 = ((uint64_t)x53 & 0xffffffffffff);
+ uint128_t x56 = (x51 + x29);
+ uint64_t x57 = (uint64_t) (x56 >> 0x30);
+ uint64_t x58 = ((uint64_t)x56 & 0xffffffffffff);
+ uint128_t x59 = (x54 + x34);
+ uint64_t x60 = (uint64_t) (x59 >> 0x30);
+ uint64_t x61 = ((uint64_t)x59 & 0xffffffffffff);
+ uint128_t x62 = (x57 + x28);
+ uint64_t x63 = (uint64_t) (x62 >> 0x30);
+ uint64_t x64 = ((uint64_t)x62 & 0xffffffffffff);
+ uint128_t x65 = (x60 + x33);
+ uint64_t x66 = (uint64_t) (x65 >> 0x30);
+ uint64_t x67 = ((uint64_t)x65 & 0xffffffffffff);
+ uint64_t x68 = (x63 + x43);
+ uint64_t x69 = (x68 >> 0x30);
+ uint64_t x70 = (x68 & 0xffffffffffff);
+ uint64_t x71 = (x66 + x38);
+ uint64_t x72 = (x71 >> 0x30);
+ uint64_t x73 = (x71 & 0xffffffffffff);
+ uint64_t x74 = ((0x1000000000000 * x69) + x70);
+ uint64_t x75 = (x74 >> 0x30);
+ uint64_t x76 = (x74 & 0xffffffffffff);
+ uint64_t x77 = ((x72 + x46) + x75);
+ uint64_t x78 = (x77 >> 0x30);
+ uint64_t x79 = (x77 & 0xffffffffffff);
+ uint64_t x80 = (x49 + x75);
+ uint64_t x81 = (x80 >> 0x30);
+ uint64_t x82 = (x80 & 0xffffffffffff);
+ return (Return x76, Return x64, Return x58, (x78 + x52), Return x79, Return x73, Return x67, Return x61, (x81 + x55), Return x82))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.c b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.c
new file mode 100644
index 000000000..863694727
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = ((0x1fffffffffffe + x5) - x23);
+ out[1] = ((0x1fffffffffffe + x7) - x25);
+ out[2] = ((0x1fffffffffffe + x9) - x27);
+ out[3] = ((0x1fffffffffffe + x11) - x29);
+ out[4] = ((0x1fffffffffffe + x13) - x31);
+ out[5] = ((Const 562949953421308 + x15) - x33);
+ out[6] = ((0x1fffffffffffe + x17) - x35);
+ out[7] = ((0x1fffffffffffe + x19) - x37);
+ out[8] = ((0x1fffffffffffe + x21) - x39);
+ out[9] = ((0x1fffffffffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.log b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..146ae8f2b
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x1fffffffffffe + x20) - x38), ((0x1fffffffffffe + x21) - x39), ((0x1fffffffffffe + x19) - x37), ((0x1fffffffffffe + x17) - x35), ((Const 562949953421308 + x15) - x33), ((0x1fffffffffffe + x13) - x31), ((0x1fffffffffffe + x11) - x29), ((0x1fffffffffffe + x9) - x27), ((0x1fffffffffffe + x7) - x25), ((0x1fffffffffffe + x5) - x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.c b/src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.c
new file mode 100644
index 000000000..60d878f34
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0xffffffffffff);
+ { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0xffffffffffff);
+ { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0xffffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffffffffff);
+ { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffe);
+ { uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0xffffffffffff);
+ { uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0xffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0xffffffffffff);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffffffffff);
+ { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ { uint64_t x50 = (x49 & 0xffffffffffff);
+ { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint64_t x54 = (x49 & 0xffffffffffff);
+ { uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint64_t x58 = (x49 & 0xffffffffffff);
+ { uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint64_t x62 = (x49 & 0xffffffffffff);
+ { uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint64_t x66 = (x49 & 0xffffffffffff);
+ { uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint64_t x70 = (x49 & 0xfffffffffffe);
+ { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint64_t x74 = (x49 & 0xffffffffffff);
+ { uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint64_t x78 = (x49 & 0xffffffffffff);
+ { uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint64_t x82 = (x49 & 0xffffffffffff);
+ { uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint64_t x86 = (x49 & 0xffffffffffff);
+ { uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.log b/src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..f5e8e5871
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0xffffffffffff);
+ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0xffffffffffff);
+ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0xffffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffffffffff);
+ uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffe);
+ uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0xffffffffffff);
+ uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0xffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0xffffffffffff);
+ uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffffffffff);
+ uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ uint64_t x50 = (x49 & 0xffffffffffff);
+ uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint64_t x54 = (x49 & 0xffffffffffff);
+ uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint64_t x58 = (x49 & 0xffffffffffff);
+ uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint64_t x62 = (x49 & 0xffffffffffff);
+ uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint64_t x66 = (x49 & 0xffffffffffff);
+ uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint64_t x70 = (x49 & 0xfffffffffffe);
+ uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint64_t x74 = (x49 & 0xffffffffffff);
+ uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint64_t x78 = (x49 & 0xffffffffffff);
+ uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint64_t x82 = (x49 & 0xffffffffffff);
+ uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint64_t x86 = (x49 & 0xffffffffffff);
+ uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_10limbs/feadd.c b/src/Specific/solinas64_2e488m17_10limbs/feadd.c
new file mode 100644
index 000000000..df991e375
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.log b/src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..04176128e
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_10limbs/femul.c b/src/Specific/solinas64_2e488m17_10limbs/femul.c
new file mode 100644
index 000000000..a8cb6e436
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/femul.c
@@ -0,0 +1,78 @@
+static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ { uint128_t x40 = (((uint128_t)x5 * x38) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + (((uint128_t)x21 * x25) + ((uint128_t)x20 * x23))))))))));
+ { uint128_t x41 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + ((0x2 * ((uint128_t)x13 * x31)) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x21 * x23))))))))) + (0x11 * (0x2 * ((uint128_t)x20 * x38))));
+ { uint128_t x42 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x19 * x23)))))))) + (0x11 * ((0x2 * ((uint128_t)x21 * x38)) + (0x2 * ((uint128_t)x20 * x39)))));
+ { uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x11 * ((0x2 * ((uint128_t)x19 * x38)) + ((0x2 * ((uint128_t)x21 * x39)) + (0x2 * ((uint128_t)x20 * x37))))));
+ { uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x11 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
+ { uint128_t x45 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (0x11 * (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33)))))));
+ { uint128_t x46 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (0x11 * ((0x2 * ((uint128_t)x13 * x38)) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + (0x2 * ((uint128_t)x20 * x31)))))))));
+ { uint128_t x47 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (0x11 * ((0x2 * ((uint128_t)x11 * x38)) + ((0x2 * ((uint128_t)x13 * x39)) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((0x2 * ((uint128_t)x21 * x31)) + (0x2 * ((uint128_t)x20 * x29))))))))));
+ { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x11 * ((0x2 * ((uint128_t)x9 * x38)) + ((0x2 * ((uint128_t)x11 * x39)) + ((0x2 * ((uint128_t)x13 * x37)) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + ((0x2 * ((uint128_t)x21 * x29)) + (0x2 * ((uint128_t)x20 * x27)))))))))));
+ { uint128_t x49 = (((uint128_t)x5 * x23) + (0x11 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
+ { uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ { uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ { uint128_t x52 = (x50 + x48);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ { uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ { uint128_t x55 = (x53 + x47);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x31);
+ { uint64_t x57 = ((uint64_t)x55 & 0x1ffffffffffff);
+ { uint128_t x58 = (x56 + x46);
+ { uint64_t x59 = (uint64_t) (x58 >> 0x31);
+ { uint64_t x60 = ((uint64_t)x58 & 0x1ffffffffffff);
+ { uint128_t x61 = (x59 + x45);
+ { uint64_t x62 = (uint64_t) (x61 >> 0x30);
+ { uint64_t x63 = ((uint64_t)x61 & 0xffffffffffff);
+ { uint128_t x64 = (x62 + x44);
+ { uint64_t x65 = (uint64_t) (x64 >> 0x31);
+ { uint64_t x66 = ((uint64_t)x64 & 0x1ffffffffffff);
+ { uint128_t x67 = (x65 + x43);
+ { uint64_t x68 = (uint64_t) (x67 >> 0x31);
+ { uint64_t x69 = ((uint64_t)x67 & 0x1ffffffffffff);
+ { uint128_t x70 = (x68 + x42);
+ { uint64_t x71 = (uint64_t) (x70 >> 0x31);
+ { uint64_t x72 = ((uint64_t)x70 & 0x1ffffffffffff);
+ { uint128_t x73 = (x71 + x41);
+ { uint64_t x74 = (uint64_t) (x73 >> 0x31);
+ { uint64_t x75 = ((uint64_t)x73 & 0x1ffffffffffff);
+ { uint128_t x76 = (x74 + x40);
+ { uint64_t x77 = (uint64_t) (x76 >> 0x30);
+ { uint64_t x78 = ((uint64_t)x76 & 0xffffffffffff);
+ { uint64_t x79 = (x51 + (0x11 * x77));
+ { uint64_t x80 = (x79 >> 0x31);
+ { uint64_t x81 = (x79 & 0x1ffffffffffff);
+ { uint64_t x82 = (x80 + x54);
+ { uint64_t x83 = (x82 >> 0x31);
+ { uint64_t x84 = (x82 & 0x1ffffffffffff);
+ out[0] = x81;
+ out[1] = x84;
+ out[2] = (x83 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_10limbs/femulDisplay.log b/src/Specific/solinas64_2e488m17_10limbs/femulDisplay.log
new file mode 100644
index 000000000..a718e8564
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/femulDisplay.log
@@ -0,0 +1,52 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint128_t x40 = (((uint128_t)x5 * x38) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + (((uint128_t)x21 * x25) + ((uint128_t)x20 * x23))))))))));
+ uint128_t x41 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + ((0x2 * ((uint128_t)x13 * x31)) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x21 * x23))))))))) + (0x11 * (0x2 * ((uint128_t)x20 * x38))));
+ uint128_t x42 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x19 * x23)))))))) + (0x11 * ((0x2 * ((uint128_t)x21 * x38)) + (0x2 * ((uint128_t)x20 * x39)))));
+ uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x11 * ((0x2 * ((uint128_t)x19 * x38)) + ((0x2 * ((uint128_t)x21 * x39)) + (0x2 * ((uint128_t)x20 * x37))))));
+ uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x11 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
+ uint128_t x45 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (0x11 * (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33)))))));
+ uint128_t x46 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (0x11 * ((0x2 * ((uint128_t)x13 * x38)) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + (0x2 * ((uint128_t)x20 * x31)))))))));
+ uint128_t x47 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (0x11 * ((0x2 * ((uint128_t)x11 * x38)) + ((0x2 * ((uint128_t)x13 * x39)) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((0x2 * ((uint128_t)x21 * x31)) + (0x2 * ((uint128_t)x20 * x29))))))))));
+ uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x11 * ((0x2 * ((uint128_t)x9 * x38)) + ((0x2 * ((uint128_t)x11 * x39)) + ((0x2 * ((uint128_t)x13 * x37)) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + ((0x2 * ((uint128_t)x21 * x29)) + (0x2 * ((uint128_t)x20 * x27)))))))))));
+ uint128_t x49 = (((uint128_t)x5 * x23) + (0x11 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
+ uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ uint128_t x52 = (x50 + x48);
+ uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ uint128_t x55 = (x53 + x47);
+ uint64_t x56 = (uint64_t) (x55 >> 0x31);
+ uint64_t x57 = ((uint64_t)x55 & 0x1ffffffffffff);
+ uint128_t x58 = (x56 + x46);
+ uint64_t x59 = (uint64_t) (x58 >> 0x31);
+ uint64_t x60 = ((uint64_t)x58 & 0x1ffffffffffff);
+ uint128_t x61 = (x59 + x45);
+ uint64_t x62 = (uint64_t) (x61 >> 0x30);
+ uint64_t x63 = ((uint64_t)x61 & 0xffffffffffff);
+ uint128_t x64 = (x62 + x44);
+ uint64_t x65 = (uint64_t) (x64 >> 0x31);
+ uint64_t x66 = ((uint64_t)x64 & 0x1ffffffffffff);
+ uint128_t x67 = (x65 + x43);
+ uint64_t x68 = (uint64_t) (x67 >> 0x31);
+ uint64_t x69 = ((uint64_t)x67 & 0x1ffffffffffff);
+ uint128_t x70 = (x68 + x42);
+ uint64_t x71 = (uint64_t) (x70 >> 0x31);
+ uint64_t x72 = ((uint64_t)x70 & 0x1ffffffffffff);
+ uint128_t x73 = (x71 + x41);
+ uint64_t x74 = (uint64_t) (x73 >> 0x31);
+ uint64_t x75 = ((uint64_t)x73 & 0x1ffffffffffff);
+ uint128_t x76 = (x74 + x40);
+ uint64_t x77 = (uint64_t) (x76 >> 0x30);
+ uint64_t x78 = ((uint64_t)x76 & 0xffffffffffff);
+ uint64_t x79 = (x51 + (0x11 * x77));
+ uint64_t x80 = (x79 >> 0x31);
+ uint64_t x81 = (x79 & 0x1ffffffffffff);
+ uint64_t x82 = (x80 + x54);
+ uint64_t x83 = (x82 >> 0x31);
+ uint64_t x84 = (x82 & 0x1ffffffffffff);
+ return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesquare.c b/src/Specific/solinas64_2e488m17_10limbs/fesquare.c
new file mode 100644
index 000000000..d418023e1
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesquare.c
@@ -0,0 +1,68 @@
+static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x19 = (((uint128_t)x2 * x17) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x17 * x2))))))))));
+ { uint128_t x20 = ((((uint128_t)x2 * x18) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + ((0x2 * ((uint128_t)x10 * x10)) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x18 * x2))))))))) + (0x11 * (0x2 * ((uint128_t)x17 * x17))));
+ { uint128_t x21 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((0x2 * ((uint128_t)x18 * x17)) + (0x2 * ((uint128_t)x17 * x18)))));
+ { uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x11 * ((0x2 * ((uint128_t)x16 * x17)) + ((0x2 * ((uint128_t)x18 * x18)) + (0x2 * ((uint128_t)x17 * x16))))));
+ { uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
+ { uint128_t x24 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12)))))));
+ { uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint128_t)x10 * x17)) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + (0x2 * ((uint128_t)x17 * x10)))))))));
+ { uint128_t x26 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * ((0x2 * ((uint128_t)x8 * x17)) + ((0x2 * ((uint128_t)x10 * x18)) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((0x2 * ((uint128_t)x18 * x10)) + (0x2 * ((uint128_t)x17 * x8))))))))));
+ { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * ((0x2 * ((uint128_t)x6 * x17)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + (0x2 * ((uint128_t)x17 * x6)))))))))));
+ { uint128_t x28 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
+ { uint64_t x29 = (uint64_t) (x28 >> 0x31);
+ { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
+ { uint128_t x31 = (x29 + x27);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x31);
+ { uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffff);
+ { uint128_t x34 = (x32 + x26);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x31);
+ { uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffff);
+ { uint128_t x37 = (x35 + x25);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x31);
+ { uint64_t x39 = ((uint64_t)x37 & 0x1ffffffffffff);
+ { uint128_t x40 = (x38 + x24);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x30);
+ { uint64_t x42 = ((uint64_t)x40 & 0xffffffffffff);
+ { uint128_t x43 = (x41 + x23);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x31);
+ { uint64_t x45 = ((uint64_t)x43 & 0x1ffffffffffff);
+ { uint128_t x46 = (x44 + x22);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x31);
+ { uint64_t x48 = ((uint64_t)x46 & 0x1ffffffffffff);
+ { uint128_t x49 = (x47 + x21);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ { uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ { uint128_t x52 = (x50 + x20);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ { uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ { uint128_t x55 = (x53 + x19);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x30);
+ { uint64_t x57 = ((uint64_t)x55 & 0xffffffffffff);
+ { uint64_t x58 = (x30 + (0x11 * x56));
+ { uint64_t x59 = (x58 >> 0x31);
+ { uint64_t x60 = (x58 & 0x1ffffffffffff);
+ { uint64_t x61 = (x59 + x33);
+ { uint64_t x62 = (x61 >> 0x31);
+ { uint64_t x63 = (x61 & 0x1ffffffffffff);
+ out[0] = x60;
+ out[1] = x63;
+ out[2] = (x62 + x36);
+ out[3] = x39;
+ out[4] = x42;
+ out[5] = x45;
+ out[6] = x48;
+ out[7] = x51;
+ out[8] = x54;
+ out[9] = x57;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.log b/src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..b0792c625
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.log
@@ -0,0 +1,52 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x19 = (((uint128_t)x2 * x17) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x17 * x2))))))))));
+ uint128_t x20 = ((((uint128_t)x2 * x18) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + ((0x2 * ((uint128_t)x10 * x10)) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x18 * x2))))))))) + (0x11 * (0x2 * ((uint128_t)x17 * x17))));
+ uint128_t x21 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((0x2 * ((uint128_t)x18 * x17)) + (0x2 * ((uint128_t)x17 * x18)))));
+ uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x11 * ((0x2 * ((uint128_t)x16 * x17)) + ((0x2 * ((uint128_t)x18 * x18)) + (0x2 * ((uint128_t)x17 * x16))))));
+ uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
+ uint128_t x24 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12)))))));
+ uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint128_t)x10 * x17)) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + (0x2 * ((uint128_t)x17 * x10)))))))));
+ uint128_t x26 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * ((0x2 * ((uint128_t)x8 * x17)) + ((0x2 * ((uint128_t)x10 * x18)) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((0x2 * ((uint128_t)x18 * x10)) + (0x2 * ((uint128_t)x17 * x8))))))))));
+ uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * ((0x2 * ((uint128_t)x6 * x17)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + (0x2 * ((uint128_t)x17 * x6)))))))))));
+ uint128_t x28 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
+ uint64_t x29 = (uint64_t) (x28 >> 0x31);
+ uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
+ uint128_t x31 = (x29 + x27);
+ uint64_t x32 = (uint64_t) (x31 >> 0x31);
+ uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffff);
+ uint128_t x34 = (x32 + x26);
+ uint64_t x35 = (uint64_t) (x34 >> 0x31);
+ uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffff);
+ uint128_t x37 = (x35 + x25);
+ uint64_t x38 = (uint64_t) (x37 >> 0x31);
+ uint64_t x39 = ((uint64_t)x37 & 0x1ffffffffffff);
+ uint128_t x40 = (x38 + x24);
+ uint64_t x41 = (uint64_t) (x40 >> 0x30);
+ uint64_t x42 = ((uint64_t)x40 & 0xffffffffffff);
+ uint128_t x43 = (x41 + x23);
+ uint64_t x44 = (uint64_t) (x43 >> 0x31);
+ uint64_t x45 = ((uint64_t)x43 & 0x1ffffffffffff);
+ uint128_t x46 = (x44 + x22);
+ uint64_t x47 = (uint64_t) (x46 >> 0x31);
+ uint64_t x48 = ((uint64_t)x46 & 0x1ffffffffffff);
+ uint128_t x49 = (x47 + x21);
+ uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ uint128_t x52 = (x50 + x20);
+ uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ uint128_t x55 = (x53 + x19);
+ uint64_t x56 = (uint64_t) (x55 >> 0x30);
+ uint64_t x57 = ((uint64_t)x55 & 0xffffffffffff);
+ uint64_t x58 = (x30 + (0x11 * x56));
+ uint64_t x59 = (x58 >> 0x31);
+ uint64_t x60 = (x58 & 0x1ffffffffffff);
+ uint64_t x61 = (x59 + x33);
+ uint64_t x62 = (x61 >> 0x31);
+ uint64_t x63 = (x61 & 0x1ffffffffffff);
+ return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesub.c b/src/Specific/solinas64_2e488m17_10limbs/fesub.c
new file mode 100644
index 000000000..d9ad52aaa
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = ((Const 1125899906842590 + x5) - x23);
+ out[1] = ((0x3fffffffffffe + x7) - x25);
+ out[2] = ((0x3fffffffffffe + x9) - x27);
+ out[3] = ((0x3fffffffffffe + x11) - x29);
+ out[4] = ((0x1fffffffffffe + x13) - x31);
+ out[5] = ((0x3fffffffffffe + x15) - x33);
+ out[6] = ((0x3fffffffffffe + x17) - x35);
+ out[7] = ((0x3fffffffffffe + x19) - x37);
+ out[8] = ((0x3fffffffffffe + x21) - x39);
+ out[9] = ((0x1fffffffffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.log b/src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..dc3ccca43
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x1fffffffffffe + x20) - x38), ((0x3fffffffffffe + x21) - x39), ((0x3fffffffffffe + x19) - x37), ((0x3fffffffffffe + x17) - x35), ((0x3fffffffffffe + x15) - x33), ((0x1fffffffffffe + x13) - x31), ((0x3fffffffffffe + x11) - x29), ((0x3fffffffffffe + x9) - x27), ((0x3fffffffffffe + x7) - x25), ((Const 1125899906842590 + x5) - x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_10limbs/freeze.c b/src/Specific/solinas64_2e488m17_10limbs/freeze.c
new file mode 100644
index 000000000..6513002e0
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421295);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffffffffff);
+ { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffffffffff);
+ { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffffffffff);
+ { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffffffffff);
+ { uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffffffffff);
+ { uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x1ffffffffffff);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffffffffff);
+ { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ { uint64_t x50 = (x49 & Const 562949953421295);
+ { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint64_t x54 = (x49 & 0x1ffffffffffff);
+ { uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint64_t x58 = (x49 & 0x1ffffffffffff);
+ { uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint64_t x62 = (x49 & 0x1ffffffffffff);
+ { uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint64_t x66 = (x49 & 0xffffffffffff);
+ { uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint64_t x70 = (x49 & 0x1ffffffffffff);
+ { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint64_t x74 = (x49 & 0x1ffffffffffff);
+ { uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint64_t x78 = (x49 & 0x1ffffffffffff);
+ { uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint64_t x82 = (x49 & 0x1ffffffffffff);
+ { uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint64_t x86 = (x49 & 0xffffffffffff);
+ { uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.log b/src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..0756d481c
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421295);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffffffffff);
+ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffffffffff);
+ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0xffffffffffff);
+ uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffffffffff);
+ uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffffffffff);
+ uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x1ffffffffffff);
+ uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffffffffff);
+ uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ uint64_t x50 = (x49 & Const 562949953421295);
+ uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint64_t x54 = (x49 & 0x1ffffffffffff);
+ uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint64_t x58 = (x49 & 0x1ffffffffffff);
+ uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint64_t x62 = (x49 & 0x1ffffffffffff);
+ uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint64_t x66 = (x49 & 0xffffffffffff);
+ uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint64_t x70 = (x49 & 0x1ffffffffffff);
+ uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint64_t x74 = (x49 & 0x1ffffffffffff);
+ uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint64_t x78 = (x49 & 0x1ffffffffffff);
+ uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint64_t x82 = (x49 & 0x1ffffffffffff);
+ uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint64_t x86 = (x49 & 0xffffffffffff);
+ uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_9limbs/feadd.c b/src/Specific/solinas64_2e488m17_9limbs/feadd.c
new file mode 100644
index 000000000..98ab4434c
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.log b/src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..3b92b1c5c
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_9limbs/femul.c b/src/Specific/solinas64_2e488m17_9limbs/femul.c
new file mode 100644
index 000000000..9fd33ac80
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ { uint128_t x36 = (((uint128_t)x5 * x34) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + (((uint128_t)x13 * x29) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((0x2 * ((uint128_t)x19 * x23)) + ((uint128_t)x18 * x21)))))))));
+ { uint128_t x37 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + ((uint128_t)x19 * x21)))))))) + (0x11 * ((uint128_t)x18 * x34)));
+ { uint128_t x38 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + ((0x2 * ((uint128_t)x15 * x23)) + ((uint128_t)x17 * x21))))))) + (0x11 * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
+ { uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x11 * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
+ { uint128_t x40 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((uint128_t)x13 * x21))))) + (0x11 * ((0x2 * ((uint128_t)x15 * x34)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + (0x2 * ((uint128_t)x18 * x31)))))));
+ { uint128_t x41 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((uint128_t)x11 * x21)))) + (0x11 * (((uint128_t)x13 * x34) + ((0x2 * ((uint128_t)x15 * x35)) + ((0x2 * ((uint128_t)x17 * x33)) + ((0x2 * ((uint128_t)x19 * x31)) + ((uint128_t)x18 * x29)))))));
+ { uint128_t x42 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((uint128_t)x9 * x21))) + (0x11 * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
+ { uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x11 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + ((0x2 * ((uint128_t)x15 * x31)) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
+ { uint128_t x44 = (((uint128_t)x5 * x21) + (0x11 * ((0x2 * ((uint128_t)x7 * x34)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + (0x2 * ((uint128_t)x18 * x23)))))))))));
+ { uint128_t x45 = (x44 >> 0x37);
+ { uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffffff);
+ { uint128_t x47 = (x45 + x43);
+ { uint128_t x48 = (x47 >> 0x36);
+ { uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff);
+ { uint128_t x50 = (x48 + x42);
+ { uint128_t x51 = (x50 >> 0x36);
+ { uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff);
+ { uint128_t x53 = (x51 + x41);
+ { uint128_t x54 = (x53 >> 0x36);
+ { uint64_t x55 = ((uint64_t)x53 & 0x3fffffffffffff);
+ { uint128_t x56 = (x54 + x40);
+ { uint64_t x57 = (uint64_t) (x56 >> 0x37);
+ { uint64_t x58 = ((uint64_t)x56 & 0x7fffffffffffff);
+ { uint128_t x59 = (x57 + x39);
+ { uint64_t x60 = (uint64_t) (x59 >> 0x36);
+ { uint64_t x61 = ((uint64_t)x59 & 0x3fffffffffffff);
+ { uint128_t x62 = (x60 + x38);
+ { uint64_t x63 = (uint64_t) (x62 >> 0x36);
+ { uint64_t x64 = ((uint64_t)x62 & 0x3fffffffffffff);
+ { uint128_t x65 = (x63 + x37);
+ { uint64_t x66 = (uint64_t) (x65 >> 0x36);
+ { uint64_t x67 = ((uint64_t)x65 & 0x3fffffffffffff);
+ { uint128_t x68 = (x66 + x36);
+ { uint64_t x69 = (uint64_t) (x68 >> 0x36);
+ { uint64_t x70 = ((uint64_t)x68 & 0x3fffffffffffff);
+ { uint128_t x71 = (x46 + ((uint128_t)0x11 * x69));
+ { uint64_t x72 = (uint64_t) (x71 >> 0x37);
+ { uint64_t x73 = ((uint64_t)x71 & 0x7fffffffffffff);
+ { uint64_t x74 = (x72 + x49);
+ { uint64_t x75 = (x74 >> 0x36);
+ { uint64_t x76 = (x74 & 0x3fffffffffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_9limbs/femulDisplay.log b/src/Specific/solinas64_2e488m17_9limbs/femulDisplay.log
new file mode 100644
index 000000000..3cd026aa2
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint128_t x36 = (((uint128_t)x5 * x34) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + (((uint128_t)x13 * x29) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((0x2 * ((uint128_t)x19 * x23)) + ((uint128_t)x18 * x21)))))))));
+ uint128_t x37 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + ((uint128_t)x19 * x21)))))))) + (0x11 * ((uint128_t)x18 * x34)));
+ uint128_t x38 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + ((0x2 * ((uint128_t)x15 * x23)) + ((uint128_t)x17 * x21))))))) + (0x11 * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
+ uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x11 * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
+ uint128_t x40 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((uint128_t)x13 * x21))))) + (0x11 * ((0x2 * ((uint128_t)x15 * x34)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + (0x2 * ((uint128_t)x18 * x31)))))));
+ uint128_t x41 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((uint128_t)x11 * x21)))) + (0x11 * (((uint128_t)x13 * x34) + ((0x2 * ((uint128_t)x15 * x35)) + ((0x2 * ((uint128_t)x17 * x33)) + ((0x2 * ((uint128_t)x19 * x31)) + ((uint128_t)x18 * x29)))))));
+ uint128_t x42 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((uint128_t)x9 * x21))) + (0x11 * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
+ uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x11 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + ((0x2 * ((uint128_t)x15 * x31)) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
+ uint128_t x44 = (((uint128_t)x5 * x21) + (0x11 * ((0x2 * ((uint128_t)x7 * x34)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + (0x2 * ((uint128_t)x18 * x23)))))))))));
+ uint128_t x45 = (x44 >> 0x37);
+ uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffffff);
+ uint128_t x47 = (x45 + x43);
+ uint128_t x48 = (x47 >> 0x36);
+ uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff);
+ uint128_t x50 = (x48 + x42);
+ uint128_t x51 = (x50 >> 0x36);
+ uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff);
+ uint128_t x53 = (x51 + x41);
+ uint128_t x54 = (x53 >> 0x36);
+ uint64_t x55 = ((uint64_t)x53 & 0x3fffffffffffff);
+ uint128_t x56 = (x54 + x40);
+ uint64_t x57 = (uint64_t) (x56 >> 0x37);
+ uint64_t x58 = ((uint64_t)x56 & 0x7fffffffffffff);
+ uint128_t x59 = (x57 + x39);
+ uint64_t x60 = (uint64_t) (x59 >> 0x36);
+ uint64_t x61 = ((uint64_t)x59 & 0x3fffffffffffff);
+ uint128_t x62 = (x60 + x38);
+ uint64_t x63 = (uint64_t) (x62 >> 0x36);
+ uint64_t x64 = ((uint64_t)x62 & 0x3fffffffffffff);
+ uint128_t x65 = (x63 + x37);
+ uint64_t x66 = (uint64_t) (x65 >> 0x36);
+ uint64_t x67 = ((uint64_t)x65 & 0x3fffffffffffff);
+ uint128_t x68 = (x66 + x36);
+ uint64_t x69 = (uint64_t) (x68 >> 0x36);
+ uint64_t x70 = ((uint64_t)x68 & 0x3fffffffffffff);
+ uint128_t x71 = (x46 + ((uint128_t)0x11 * x69));
+ uint64_t x72 = (uint64_t) (x71 >> 0x37);
+ uint64_t x73 = ((uint64_t)x71 & 0x7fffffffffffff);
+ uint64_t x74 = (x72 + x49);
+ uint64_t x75 = (x74 >> 0x36);
+ uint64_t x76 = (x74 & 0x3fffffffffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesquare.c b/src/Specific/solinas64_2e488m17_9limbs/fesquare.c
new file mode 100644
index 000000000..9d730953e
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
+ { const uint64_t x15 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x17 = (((uint128_t)x2 * x15) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x15 * x2)))))))));
+ { uint128_t x18 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((uint128_t)x15 * x15)));
+ { uint128_t x19 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
+ { uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
+ { uint128_t x21 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint128_t)x12 * x15)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (0x2 * ((uint128_t)x15 * x12)))))));
+ { uint128_t x22 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x15) + ((0x2 * ((uint128_t)x12 * x16)) + ((0x2 * ((uint128_t)x14 * x14)) + ((0x2 * ((uint128_t)x16 * x12)) + ((uint128_t)x15 * x10)))))));
+ { uint128_t x23 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
+ { uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
+ { uint128_t x25 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x15)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + (0x2 * ((uint128_t)x15 * x4)))))))))));
+ { uint128_t x26 = (x25 >> 0x37);
+ { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
+ { uint128_t x28 = (x26 + x24);
+ { uint128_t x29 = (x28 >> 0x36);
+ { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ { uint128_t x31 = (x29 + x23);
+ { uint128_t x32 = (x31 >> 0x36);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
+ { uint128_t x34 = (x32 + x22);
+ { uint128_t x35 = (x34 >> 0x36);
+ { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
+ { uint128_t x37 = (x35 + x21);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x37);
+ { uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffffff);
+ { uint128_t x40 = (x38 + x20);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x36);
+ { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
+ { uint128_t x43 = (x41 + x19);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x36);
+ { uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffffff);
+ { uint128_t x46 = (x44 + x18);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x36);
+ { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
+ { uint128_t x49 = (x47 + x17);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x36);
+ { uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
+ { uint128_t x52 = (x27 + ((uint128_t)0x11 * x50));
+ { uint64_t x53 = (uint64_t) (x52 >> 0x37);
+ { uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffffff);
+ { uint64_t x55 = (x53 + x30);
+ { uint64_t x56 = (x55 >> 0x36);
+ { uint64_t x57 = (x55 & 0x3fffffffffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.log b/src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..7698803a0
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x17 = (((uint128_t)x2 * x15) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x15 * x2)))))))));
+ uint128_t x18 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((uint128_t)x15 * x15)));
+ uint128_t x19 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
+ uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
+ uint128_t x21 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint128_t)x12 * x15)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (0x2 * ((uint128_t)x15 * x12)))))));
+ uint128_t x22 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x15) + ((0x2 * ((uint128_t)x12 * x16)) + ((0x2 * ((uint128_t)x14 * x14)) + ((0x2 * ((uint128_t)x16 * x12)) + ((uint128_t)x15 * x10)))))));
+ uint128_t x23 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
+ uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
+ uint128_t x25 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x15)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + (0x2 * ((uint128_t)x15 * x4)))))))))));
+ uint128_t x26 = (x25 >> 0x37);
+ uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
+ uint128_t x28 = (x26 + x24);
+ uint128_t x29 = (x28 >> 0x36);
+ uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ uint128_t x31 = (x29 + x23);
+ uint128_t x32 = (x31 >> 0x36);
+ uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
+ uint128_t x34 = (x32 + x22);
+ uint128_t x35 = (x34 >> 0x36);
+ uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
+ uint128_t x37 = (x35 + x21);
+ uint64_t x38 = (uint64_t) (x37 >> 0x37);
+ uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffffff);
+ uint128_t x40 = (x38 + x20);
+ uint64_t x41 = (uint64_t) (x40 >> 0x36);
+ uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
+ uint128_t x43 = (x41 + x19);
+ uint64_t x44 = (uint64_t) (x43 >> 0x36);
+ uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffffff);
+ uint128_t x46 = (x44 + x18);
+ uint64_t x47 = (uint64_t) (x46 >> 0x36);
+ uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
+ uint128_t x49 = (x47 + x17);
+ uint64_t x50 = (uint64_t) (x49 >> 0x36);
+ uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
+ uint128_t x52 = (x27 + ((uint128_t)0x11 * x50));
+ uint64_t x53 = (uint64_t) (x52 >> 0x37);
+ uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffffff);
+ uint64_t x55 = (x53 + x30);
+ uint64_t x56 = (x55 >> 0x36);
+ uint64_t x57 = (x55 & 0x3fffffffffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesub.c b/src/Specific/solinas64_2e488m17_9limbs/fesub.c
new file mode 100644
index 000000000..61c2c1ab6
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ out[0] = ((Const 72057594037927902 + x5) - x21);
+ out[1] = ((0x7ffffffffffffe + x7) - x23);
+ out[2] = ((0x7ffffffffffffe + x9) - x25);
+ out[3] = ((0x7ffffffffffffe + x11) - x27);
+ out[4] = ((0xfffffffffffffe + x13) - x29);
+ out[5] = ((0x7ffffffffffffe + x15) - x31);
+ out[6] = ((0x7ffffffffffffe + x17) - x33);
+ out[7] = ((0x7ffffffffffffe + x19) - x35);
+ out[8] = ((0x7ffffffffffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.log b/src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..8854a8f3d
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x7ffffffffffffe + x18) - x34), ((0x7ffffffffffffe + x19) - x35), ((0x7ffffffffffffe + x17) - x33), ((0x7ffffffffffffe + x15) - x31), ((0xfffffffffffffe + x13) - x29), ((0x7ffffffffffffe + x11) - x27), ((0x7ffffffffffffe + x9) - x25), ((0x7ffffffffffffe + x7) - x23), ((Const 72057594037927902 + x5) - x21)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17_9limbs/freeze.c b/src/Specific/solinas64_2e488m17_9limbs/freeze.c
new file mode 100644
index 000000000..854f3c86a
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint64_t out[9], const uint64_t in1[9]) {
+ { const uint64_t x15 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963951);
+ { 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 x4, 0x3fffffffffffff);
+ { 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 x6, 0x3fffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffffffffffff);
+ { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffffffffffff);
+ { uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffffffffffff);
+ { uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffffff);
+ { uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffffffffffff);
+ { uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
+ { uint64_t x45 = (x44 & Const 36028797018963951);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint64_t x49 = (x44 & 0x3fffffffffffff);
+ { uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint64_t x53 = (x44 & 0x3fffffffffffff);
+ { uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint64_t x57 = (x44 & 0x3fffffffffffff);
+ { uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint64_t x61 = (x44 & 0x7fffffffffffff);
+ { uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint64_t x65 = (x44 & 0x3fffffffffffff);
+ { uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint64_t x69 = (x44 & 0x3fffffffffffff);
+ { uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint64_t x73 = (x44 & 0x3fffffffffffff);
+ { uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint64_t x77 = (x44 & 0x3fffffffffffff);
+ { uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.log b/src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..ade1c748c
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 36028797018963951);
+ 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 x4, 0x3fffffffffffff);
+ 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 x6, 0x3fffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffffffffffff);
+ uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffffffffffff);
+ uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffffffffffff);
+ uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffffff);
+ uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffffffffffff);
+ uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
+ uint64_t x45 = (x44 & Const 36028797018963951);
+ uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint64_t x49 = (x44 & 0x3fffffffffffff);
+ uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint64_t x53 = (x44 & 0x3fffffffffffff);
+ uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint64_t x57 = (x44 & 0x3fffffffffffff);
+ uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint64_t x61 = (x44 & 0x7fffffffffffff);
+ uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint64_t x65 = (x44 & 0x3fffffffffffff);
+ uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint64_t x69 = (x44 & 0x3fffffffffffff);
+ uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint64_t x73 = (x44 & 0x3fffffffffffff);
+ uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint64_t x77 = (x44 & 0x3fffffffffffff);
+ uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21_10limbs/feadd.c b/src/Specific/solinas64_2e489m21_10limbs/feadd.c
new file mode 100644
index 000000000..df991e375
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.log b/src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..04176128e
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21_10limbs/femul.c b/src/Specific/solinas64_2e489m21_10limbs/femul.c
new file mode 100644
index 000000000..2b1081e60
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/femul.c
@@ -0,0 +1,78 @@
+static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ { uint128_t x40 = (((uint128_t)x5 * x38) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + (((uint128_t)x21 * x25) + ((uint128_t)x20 * x23))))))))));
+ { uint128_t x41 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x21 * x23))))))))) + (0x15 * (0x2 * ((uint128_t)x20 * x38))));
+ { uint128_t x42 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x19 * x23)))))))) + (0x15 * ((0x2 * ((uint128_t)x21 * x38)) + (0x2 * ((uint128_t)x20 * x39)))));
+ { uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x15 * ((0x2 * ((uint128_t)x19 * x38)) + ((0x2 * ((uint128_t)x21 * x39)) + (0x2 * ((uint128_t)x20 * x37))))));
+ { uint128_t x44 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + ((uint128_t)x15 * x23)))))) + (0x15 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
+ { uint128_t x45 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (0x15 * ((0x2 * ((uint128_t)x15 * x38)) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + (0x2 * ((uint128_t)x20 * x33))))))));
+ { uint128_t x46 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (0x15 * ((0x2 * ((uint128_t)x13 * x38)) + ((0x2 * ((uint128_t)x15 * x39)) + ((0x2 * ((uint128_t)x17 * x37)) + ((0x2 * ((uint128_t)x19 * x35)) + ((0x2 * ((uint128_t)x21 * x33)) + (0x2 * ((uint128_t)x20 * x31)))))))));
+ { uint128_t x47 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (0x15 * ((0x2 * ((uint128_t)x11 * x38)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + (0x2 * ((uint128_t)x20 * x29))))))))));
+ { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x15 * ((0x2 * ((uint128_t)x9 * x38)) + ((0x2 * ((uint128_t)x11 * x39)) + ((0x2 * ((uint128_t)x13 * x37)) + ((0x2 * ((uint128_t)x15 * x35)) + ((0x2 * ((uint128_t)x17 * x33)) + ((0x2 * ((uint128_t)x19 * x31)) + ((0x2 * ((uint128_t)x21 * x29)) + (0x2 * ((uint128_t)x20 * x27)))))))))));
+ { uint128_t x49 = (((uint128_t)x5 * x23) + (0x15 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
+ { uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ { uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ { uint128_t x52 = (x50 + x48);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ { uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ { uint128_t x55 = (x53 + x47);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x31);
+ { uint64_t x57 = ((uint64_t)x55 & 0x1ffffffffffff);
+ { uint128_t x58 = (x56 + x46);
+ { uint64_t x59 = (uint64_t) (x58 >> 0x31);
+ { uint64_t x60 = ((uint64_t)x58 & 0x1ffffffffffff);
+ { uint128_t x61 = (x59 + x45);
+ { uint64_t x62 = (uint64_t) (x61 >> 0x31);
+ { uint64_t x63 = ((uint64_t)x61 & 0x1ffffffffffff);
+ { uint128_t x64 = (x62 + x44);
+ { uint64_t x65 = (uint64_t) (x64 >> 0x31);
+ { uint64_t x66 = ((uint64_t)x64 & 0x1ffffffffffff);
+ { uint128_t x67 = (x65 + x43);
+ { uint64_t x68 = (uint64_t) (x67 >> 0x31);
+ { uint64_t x69 = ((uint64_t)x67 & 0x1ffffffffffff);
+ { uint128_t x70 = (x68 + x42);
+ { uint64_t x71 = (uint64_t) (x70 >> 0x31);
+ { uint64_t x72 = ((uint64_t)x70 & 0x1ffffffffffff);
+ { uint128_t x73 = (x71 + x41);
+ { uint64_t x74 = (uint64_t) (x73 >> 0x31);
+ { uint64_t x75 = ((uint64_t)x73 & 0x1ffffffffffff);
+ { uint128_t x76 = (x74 + x40);
+ { uint64_t x77 = (uint64_t) (x76 >> 0x30);
+ { uint64_t x78 = ((uint64_t)x76 & 0xffffffffffff);
+ { uint64_t x79 = (x51 + (0x15 * x77));
+ { uint64_t x80 = (x79 >> 0x31);
+ { uint64_t x81 = (x79 & 0x1ffffffffffff);
+ { uint64_t x82 = (x80 + x54);
+ { uint64_t x83 = (x82 >> 0x31);
+ { uint64_t x84 = (x82 & 0x1ffffffffffff);
+ out[0] = x81;
+ out[1] = x84;
+ out[2] = (x83 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e489m21_10limbs/femulDisplay.log b/src/Specific/solinas64_2e489m21_10limbs/femulDisplay.log
new file mode 100644
index 000000000..cbbdf9d02
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/femulDisplay.log
@@ -0,0 +1,52 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint128_t x40 = (((uint128_t)x5 * x38) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + (((uint128_t)x21 * x25) + ((uint128_t)x20 * x23))))))))));
+ uint128_t x41 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x21 * x23))))))))) + (0x15 * (0x2 * ((uint128_t)x20 * x38))));
+ uint128_t x42 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x19 * x23)))))))) + (0x15 * ((0x2 * ((uint128_t)x21 * x38)) + (0x2 * ((uint128_t)x20 * x39)))));
+ uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x15 * ((0x2 * ((uint128_t)x19 * x38)) + ((0x2 * ((uint128_t)x21 * x39)) + (0x2 * ((uint128_t)x20 * x37))))));
+ uint128_t x44 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + ((uint128_t)x15 * x23)))))) + (0x15 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
+ uint128_t x45 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((uint128_t)x13 * x23))))) + (0x15 * ((0x2 * ((uint128_t)x15 * x38)) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + (0x2 * ((uint128_t)x20 * x33))))))));
+ uint128_t x46 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (0x15 * ((0x2 * ((uint128_t)x13 * x38)) + ((0x2 * ((uint128_t)x15 * x39)) + ((0x2 * ((uint128_t)x17 * x37)) + ((0x2 * ((uint128_t)x19 * x35)) + ((0x2 * ((uint128_t)x21 * x33)) + (0x2 * ((uint128_t)x20 * x31)))))))));
+ uint128_t x47 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + ((uint128_t)x9 * x23))) + (0x15 * ((0x2 * ((uint128_t)x11 * x38)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + (0x2 * ((uint128_t)x20 * x29))))))))));
+ uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x15 * ((0x2 * ((uint128_t)x9 * x38)) + ((0x2 * ((uint128_t)x11 * x39)) + ((0x2 * ((uint128_t)x13 * x37)) + ((0x2 * ((uint128_t)x15 * x35)) + ((0x2 * ((uint128_t)x17 * x33)) + ((0x2 * ((uint128_t)x19 * x31)) + ((0x2 * ((uint128_t)x21 * x29)) + (0x2 * ((uint128_t)x20 * x27)))))))))));
+ uint128_t x49 = (((uint128_t)x5 * x23) + (0x15 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
+ uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ uint128_t x52 = (x50 + x48);
+ uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ uint128_t x55 = (x53 + x47);
+ uint64_t x56 = (uint64_t) (x55 >> 0x31);
+ uint64_t x57 = ((uint64_t)x55 & 0x1ffffffffffff);
+ uint128_t x58 = (x56 + x46);
+ uint64_t x59 = (uint64_t) (x58 >> 0x31);
+ uint64_t x60 = ((uint64_t)x58 & 0x1ffffffffffff);
+ uint128_t x61 = (x59 + x45);
+ uint64_t x62 = (uint64_t) (x61 >> 0x31);
+ uint64_t x63 = ((uint64_t)x61 & 0x1ffffffffffff);
+ uint128_t x64 = (x62 + x44);
+ uint64_t x65 = (uint64_t) (x64 >> 0x31);
+ uint64_t x66 = ((uint64_t)x64 & 0x1ffffffffffff);
+ uint128_t x67 = (x65 + x43);
+ uint64_t x68 = (uint64_t) (x67 >> 0x31);
+ uint64_t x69 = ((uint64_t)x67 & 0x1ffffffffffff);
+ uint128_t x70 = (x68 + x42);
+ uint64_t x71 = (uint64_t) (x70 >> 0x31);
+ uint64_t x72 = ((uint64_t)x70 & 0x1ffffffffffff);
+ uint128_t x73 = (x71 + x41);
+ uint64_t x74 = (uint64_t) (x73 >> 0x31);
+ uint64_t x75 = ((uint64_t)x73 & 0x1ffffffffffff);
+ uint128_t x76 = (x74 + x40);
+ uint64_t x77 = (uint64_t) (x76 >> 0x30);
+ uint64_t x78 = ((uint64_t)x76 & 0xffffffffffff);
+ uint64_t x79 = (x51 + (0x15 * x77));
+ uint64_t x80 = (x79 >> 0x31);
+ uint64_t x81 = (x79 & 0x1ffffffffffff);
+ uint64_t x82 = (x80 + x54);
+ uint64_t x83 = (x82 >> 0x31);
+ uint64_t x84 = (x82 & 0x1ffffffffffff);
+ return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesquare.c b/src/Specific/solinas64_2e489m21_10limbs/fesquare.c
new file mode 100644
index 000000000..5b01941f1
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesquare.c
@@ -0,0 +1,68 @@
+static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x19 = (((uint128_t)x2 * x17) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x17 * x2))))))))));
+ { uint128_t x20 = ((((uint128_t)x2 * x18) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x18 * x2))))))))) + (0x15 * (0x2 * ((uint128_t)x17 * x17))));
+ { uint128_t x21 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x15 * ((0x2 * ((uint128_t)x18 * x17)) + (0x2 * ((uint128_t)x17 * x18)))));
+ { uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x15 * ((0x2 * ((uint128_t)x16 * x17)) + ((0x2 * ((uint128_t)x18 * x18)) + (0x2 * ((uint128_t)x17 * x16))))));
+ { uint128_t x23 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x15 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
+ { uint128_t x24 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * ((0x2 * ((uint128_t)x12 * x17)) + ((0x2 * ((uint128_t)x14 * x18)) + ((0x2 * ((uint128_t)x16 * x16)) + ((0x2 * ((uint128_t)x18 * x14)) + (0x2 * ((uint128_t)x17 * x12))))))));
+ { uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x15 * ((0x2 * ((uint128_t)x10 * x17)) + ((0x2 * ((uint128_t)x12 * x18)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + ((0x2 * ((uint128_t)x18 * x12)) + (0x2 * ((uint128_t)x17 * x10)))))))));
+ { uint128_t x26 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x15 * ((0x2 * ((uint128_t)x8 * x17)) + ((0x2 * ((uint128_t)x10 * x18)) + ((0x2 * ((uint128_t)x12 * x16)) + ((0x2 * ((uint128_t)x14 * x14)) + ((0x2 * ((uint128_t)x16 * x12)) + ((0x2 * ((uint128_t)x18 * x10)) + (0x2 * ((uint128_t)x17 * x8))))))))));
+ { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x15 * ((0x2 * ((uint128_t)x6 * x17)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + (0x2 * ((uint128_t)x17 * x6)))))))))));
+ { uint128_t x28 = (((uint128_t)x2 * x2) + (0x15 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
+ { uint64_t x29 = (uint64_t) (x28 >> 0x31);
+ { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
+ { uint128_t x31 = (x29 + x27);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x31);
+ { uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffff);
+ { uint128_t x34 = (x32 + x26);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x31);
+ { uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffff);
+ { uint128_t x37 = (x35 + x25);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x31);
+ { uint64_t x39 = ((uint64_t)x37 & 0x1ffffffffffff);
+ { uint128_t x40 = (x38 + x24);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x31);
+ { uint64_t x42 = ((uint64_t)x40 & 0x1ffffffffffff);
+ { uint128_t x43 = (x41 + x23);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x31);
+ { uint64_t x45 = ((uint64_t)x43 & 0x1ffffffffffff);
+ { uint128_t x46 = (x44 + x22);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x31);
+ { uint64_t x48 = ((uint64_t)x46 & 0x1ffffffffffff);
+ { uint128_t x49 = (x47 + x21);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ { uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ { uint128_t x52 = (x50 + x20);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ { uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ { uint128_t x55 = (x53 + x19);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x30);
+ { uint64_t x57 = ((uint64_t)x55 & 0xffffffffffff);
+ { uint64_t x58 = (x30 + (0x15 * x56));
+ { uint64_t x59 = (x58 >> 0x31);
+ { uint64_t x60 = (x58 & 0x1ffffffffffff);
+ { uint64_t x61 = (x59 + x33);
+ { uint64_t x62 = (x61 >> 0x31);
+ { uint64_t x63 = (x61 & 0x1ffffffffffff);
+ out[0] = x60;
+ out[1] = x63;
+ out[2] = (x62 + x36);
+ out[3] = x39;
+ out[4] = x42;
+ out[5] = x45;
+ out[6] = x48;
+ out[7] = x51;
+ out[8] = x54;
+ out[9] = x57;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.log b/src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..b6a6990b4
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.log
@@ -0,0 +1,52 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x19 = (((uint128_t)x2 * x17) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x17 * x2))))))))));
+ uint128_t x20 = ((((uint128_t)x2 * x18) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x18 * x2))))))))) + (0x15 * (0x2 * ((uint128_t)x17 * x17))));
+ uint128_t x21 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x15 * ((0x2 * ((uint128_t)x18 * x17)) + (0x2 * ((uint128_t)x17 * x18)))));
+ uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x15 * ((0x2 * ((uint128_t)x16 * x17)) + ((0x2 * ((uint128_t)x18 * x18)) + (0x2 * ((uint128_t)x17 * x16))))));
+ uint128_t x23 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x15 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
+ uint128_t x24 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * ((0x2 * ((uint128_t)x12 * x17)) + ((0x2 * ((uint128_t)x14 * x18)) + ((0x2 * ((uint128_t)x16 * x16)) + ((0x2 * ((uint128_t)x18 * x14)) + (0x2 * ((uint128_t)x17 * x12))))))));
+ uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x15 * ((0x2 * ((uint128_t)x10 * x17)) + ((0x2 * ((uint128_t)x12 * x18)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + ((0x2 * ((uint128_t)x18 * x12)) + (0x2 * ((uint128_t)x17 * x10)))))))));
+ uint128_t x26 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x15 * ((0x2 * ((uint128_t)x8 * x17)) + ((0x2 * ((uint128_t)x10 * x18)) + ((0x2 * ((uint128_t)x12 * x16)) + ((0x2 * ((uint128_t)x14 * x14)) + ((0x2 * ((uint128_t)x16 * x12)) + ((0x2 * ((uint128_t)x18 * x10)) + (0x2 * ((uint128_t)x17 * x8))))))))));
+ uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x15 * ((0x2 * ((uint128_t)x6 * x17)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + (0x2 * ((uint128_t)x17 * x6)))))))))));
+ uint128_t x28 = (((uint128_t)x2 * x2) + (0x15 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
+ uint64_t x29 = (uint64_t) (x28 >> 0x31);
+ uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
+ uint128_t x31 = (x29 + x27);
+ uint64_t x32 = (uint64_t) (x31 >> 0x31);
+ uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffff);
+ uint128_t x34 = (x32 + x26);
+ uint64_t x35 = (uint64_t) (x34 >> 0x31);
+ uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffff);
+ uint128_t x37 = (x35 + x25);
+ uint64_t x38 = (uint64_t) (x37 >> 0x31);
+ uint64_t x39 = ((uint64_t)x37 & 0x1ffffffffffff);
+ uint128_t x40 = (x38 + x24);
+ uint64_t x41 = (uint64_t) (x40 >> 0x31);
+ uint64_t x42 = ((uint64_t)x40 & 0x1ffffffffffff);
+ uint128_t x43 = (x41 + x23);
+ uint64_t x44 = (uint64_t) (x43 >> 0x31);
+ uint64_t x45 = ((uint64_t)x43 & 0x1ffffffffffff);
+ uint128_t x46 = (x44 + x22);
+ uint64_t x47 = (uint64_t) (x46 >> 0x31);
+ uint64_t x48 = ((uint64_t)x46 & 0x1ffffffffffff);
+ uint128_t x49 = (x47 + x21);
+ uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ uint128_t x52 = (x50 + x20);
+ uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ uint128_t x55 = (x53 + x19);
+ uint64_t x56 = (uint64_t) (x55 >> 0x30);
+ uint64_t x57 = ((uint64_t)x55 & 0xffffffffffff);
+ uint64_t x58 = (x30 + (0x15 * x56));
+ uint64_t x59 = (x58 >> 0x31);
+ uint64_t x60 = (x58 & 0x1ffffffffffff);
+ uint64_t x61 = (x59 + x33);
+ uint64_t x62 = (x61 >> 0x31);
+ uint64_t x63 = (x61 & 0x1ffffffffffff);
+ return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesub.c b/src/Specific/solinas64_2e489m21_10limbs/fesub.c
new file mode 100644
index 000000000..f1b598466
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = ((0x3ffffffffffd6 + x5) - x23);
+ out[1] = ((0x3fffffffffffe + x7) - x25);
+ out[2] = ((0x3fffffffffffe + x9) - x27);
+ out[3] = ((0x3fffffffffffe + x11) - x29);
+ out[4] = ((0x3fffffffffffe + x13) - x31);
+ out[5] = ((0x3fffffffffffe + x15) - x33);
+ out[6] = ((0x3fffffffffffe + x17) - x35);
+ out[7] = ((0x3fffffffffffe + x19) - x37);
+ out[8] = ((0x3fffffffffffe + x21) - x39);
+ out[9] = ((0x1fffffffffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.log b/src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..b53bb1270
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x1fffffffffffe + x20) - x38), ((0x3fffffffffffe + x21) - x39), ((0x3fffffffffffe + x19) - x37), ((0x3fffffffffffe + x17) - x35), ((0x3fffffffffffe + x15) - x33), ((0x3fffffffffffe + x13) - x31), ((0x3fffffffffffe + x11) - x29), ((0x3fffffffffffe + x9) - x27), ((0x3fffffffffffe + x7) - x25), ((0x3ffffffffffd6 + x5) - x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21_10limbs/freeze.c b/src/Specific/solinas64_2e489m21_10limbs/freeze.c
new file mode 100644
index 000000000..d3cc1357e
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffeb);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffffffffff);
+ { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffffffffff);
+ { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x1ffffffffffff);
+ { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffffffffff);
+ { uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffffffffff);
+ { uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x1ffffffffffff);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffffffffff);
+ { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ { uint64_t x50 = (x49 & 0x1ffffffffffeb);
+ { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint64_t x54 = (x49 & 0x1ffffffffffff);
+ { uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint64_t x58 = (x49 & 0x1ffffffffffff);
+ { uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint64_t x62 = (x49 & 0x1ffffffffffff);
+ { uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint64_t x66 = (x49 & 0x1ffffffffffff);
+ { uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint64_t x70 = (x49 & 0x1ffffffffffff);
+ { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint64_t x74 = (x49 & 0x1ffffffffffff);
+ { uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint64_t x78 = (x49 & 0x1ffffffffffff);
+ { uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint64_t x82 = (x49 & 0x1ffffffffffff);
+ { uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint64_t x86 = (x49 & 0xffffffffffff);
+ { uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.log b/src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..75d1da1b6
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffeb);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffffffffff);
+ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffffffffff);
+ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x1ffffffffffff);
+ uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffffffffff);
+ uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffffffffff);
+ uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x1ffffffffffff);
+ uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xffffffffffff);
+ uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ uint64_t x50 = (x49 & 0x1ffffffffffeb);
+ uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint64_t x54 = (x49 & 0x1ffffffffffff);
+ uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint64_t x58 = (x49 & 0x1ffffffffffff);
+ uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint64_t x62 = (x49 & 0x1ffffffffffff);
+ uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint64_t x66 = (x49 & 0x1ffffffffffff);
+ uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint64_t x70 = (x49 & 0x1ffffffffffff);
+ uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint64_t x74 = (x49 & 0x1ffffffffffff);
+ uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint64_t x78 = (x49 & 0x1ffffffffffff);
+ uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint64_t x82 = (x49 & 0x1ffffffffffff);
+ uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint64_t x86 = (x49 & 0xffffffffffff);
+ uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31_10limbs/feadd.c b/src/Specific/solinas64_2e495m31_10limbs/feadd.c
new file mode 100644
index 000000000..df991e375
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/feadd.c
@@ -0,0 +1,33 @@
+static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = (x5 + x23);
+ out[1] = (x7 + x25);
+ out[2] = (x9 + x27);
+ out[3] = (x11 + x29);
+ out[4] = (x13 + x31);
+ out[5] = (x15 + x33);
+ out[6] = (x17 + x35);
+ out[7] = (x19 + x37);
+ out[8] = (x21 + x39);
+ out[9] = (x20 + x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.log b/src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.log
new file mode 100644
index 000000000..04176128e
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31_10limbs/femul.c b/src/Specific/solinas64_2e495m31_10limbs/femul.c
new file mode 100644
index 000000000..938158658
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/femul.c
@@ -0,0 +1,78 @@
+static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ { uint128_t x40 = (((uint128_t)x5 * x38) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + (((uint128_t)x21 * x25) + ((uint128_t)x20 * x23))))))))));
+ { uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + (((uint128_t)x9 * x35) + ((0x2 * ((uint128_t)x11 * x33)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x1f * (0x2 * ((uint128_t)x20 * x38))));
+ { uint128_t x42 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x19 * x23)))))))) + (0x1f * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
+ { uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (0x1f * ((0x2 * ((uint128_t)x19 * x38)) + (((uint128_t)x21 * x39) + (0x2 * ((uint128_t)x20 * x37))))));
+ { uint128_t x44 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + ((uint128_t)x15 * x23)))))) + (0x1f * (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))));
+ { uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x1f * ((0x2 * ((uint128_t)x15 * x38)) + (((uint128_t)x17 * x39) + ((0x2 * ((uint128_t)x19 * x37)) + (((uint128_t)x21 * x35) + (0x2 * ((uint128_t)x20 * x33))))))));
+ { uint128_t x46 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (0x1f * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
+ { uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x1f * ((0x2 * ((uint128_t)x11 * x38)) + (((uint128_t)x13 * x39) + ((0x2 * ((uint128_t)x15 * x37)) + (((uint128_t)x17 * x35) + ((0x2 * ((uint128_t)x19 * x33)) + (((uint128_t)x21 * x31) + (0x2 * ((uint128_t)x20 * x29))))))))));
+ { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x1f * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
+ { uint128_t x49 = (((uint128_t)x5 * x23) + (0x1f * ((0x2 * ((uint128_t)x7 * x38)) + (((uint128_t)x9 * x39) + ((0x2 * ((uint128_t)x11 * x37)) + (((uint128_t)x13 * x35) + ((0x2 * ((uint128_t)x15 * x33)) + (((uint128_t)x17 * x31) + ((0x2 * ((uint128_t)x19 * x29)) + (((uint128_t)x21 * x27) + (0x2 * ((uint128_t)x20 * x25))))))))))));
+ { uint64_t x50 = (uint64_t) (x49 >> 0x32);
+ { uint64_t x51 = ((uint64_t)x49 & 0x3ffffffffffff);
+ { uint128_t x52 = (x50 + x48);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ { uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ { uint128_t x55 = (x53 + x47);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x32);
+ { uint64_t x57 = ((uint64_t)x55 & 0x3ffffffffffff);
+ { uint128_t x58 = (x56 + x46);
+ { uint64_t x59 = (uint64_t) (x58 >> 0x31);
+ { uint64_t x60 = ((uint64_t)x58 & 0x1ffffffffffff);
+ { uint128_t x61 = (x59 + x45);
+ { uint64_t x62 = (uint64_t) (x61 >> 0x32);
+ { uint64_t x63 = ((uint64_t)x61 & 0x3ffffffffffff);
+ { uint128_t x64 = (x62 + x44);
+ { uint64_t x65 = (uint64_t) (x64 >> 0x31);
+ { uint64_t x66 = ((uint64_t)x64 & 0x1ffffffffffff);
+ { uint128_t x67 = (x65 + x43);
+ { uint64_t x68 = (uint64_t) (x67 >> 0x32);
+ { uint64_t x69 = ((uint64_t)x67 & 0x3ffffffffffff);
+ { uint128_t x70 = (x68 + x42);
+ { uint64_t x71 = (uint64_t) (x70 >> 0x31);
+ { uint64_t x72 = ((uint64_t)x70 & 0x1ffffffffffff);
+ { uint128_t x73 = (x71 + x41);
+ { uint64_t x74 = (uint64_t) (x73 >> 0x32);
+ { uint64_t x75 = ((uint64_t)x73 & 0x3ffffffffffff);
+ { uint128_t x76 = (x74 + x40);
+ { uint64_t x77 = (uint64_t) (x76 >> 0x31);
+ { uint64_t x78 = ((uint64_t)x76 & 0x1ffffffffffff);
+ { uint64_t x79 = (x51 + (0x1f * x77));
+ { uint64_t x80 = (x79 >> 0x32);
+ { uint64_t x81 = (x79 & 0x3ffffffffffff);
+ { uint64_t x82 = (x80 + x54);
+ { uint64_t x83 = (x82 >> 0x31);
+ { uint64_t x84 = (x82 & 0x1ffffffffffff);
+ out[0] = x81;
+ out[1] = x84;
+ out[2] = (x83 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e495m31_10limbs/femulDisplay.log b/src/Specific/solinas64_2e495m31_10limbs/femulDisplay.log
new file mode 100644
index 000000000..c5ae08a38
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/femulDisplay.log
@@ -0,0 +1,52 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ uint128_t x40 = (((uint128_t)x5 * x38) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + (((uint128_t)x21 * x25) + ((uint128_t)x20 * x23))))))))));
+ uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + (((uint128_t)x9 * x35) + ((0x2 * ((uint128_t)x11 * x33)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x1f * (0x2 * ((uint128_t)x20 * x38))));
+ uint128_t x42 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x19 * x23)))))))) + (0x1f * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
+ uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (0x1f * ((0x2 * ((uint128_t)x19 * x38)) + (((uint128_t)x21 * x39) + (0x2 * ((uint128_t)x20 * x37))))));
+ uint128_t x44 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + ((uint128_t)x15 * x23)))))) + (0x1f * (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))));
+ uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x1f * ((0x2 * ((uint128_t)x15 * x38)) + (((uint128_t)x17 * x39) + ((0x2 * ((uint128_t)x19 * x37)) + (((uint128_t)x21 * x35) + (0x2 * ((uint128_t)x20 * x33))))))));
+ uint128_t x46 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)))) + (0x1f * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
+ uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x1f * ((0x2 * ((uint128_t)x11 * x38)) + (((uint128_t)x13 * x39) + ((0x2 * ((uint128_t)x15 * x37)) + (((uint128_t)x17 * x35) + ((0x2 * ((uint128_t)x19 * x33)) + (((uint128_t)x21 * x31) + (0x2 * ((uint128_t)x20 * x29))))))))));
+ uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x1f * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
+ uint128_t x49 = (((uint128_t)x5 * x23) + (0x1f * ((0x2 * ((uint128_t)x7 * x38)) + (((uint128_t)x9 * x39) + ((0x2 * ((uint128_t)x11 * x37)) + (((uint128_t)x13 * x35) + ((0x2 * ((uint128_t)x15 * x33)) + (((uint128_t)x17 * x31) + ((0x2 * ((uint128_t)x19 * x29)) + (((uint128_t)x21 * x27) + (0x2 * ((uint128_t)x20 * x25))))))))))));
+ uint64_t x50 = (uint64_t) (x49 >> 0x32);
+ uint64_t x51 = ((uint64_t)x49 & 0x3ffffffffffff);
+ uint128_t x52 = (x50 + x48);
+ uint64_t x53 = (uint64_t) (x52 >> 0x31);
+ uint64_t x54 = ((uint64_t)x52 & 0x1ffffffffffff);
+ uint128_t x55 = (x53 + x47);
+ uint64_t x56 = (uint64_t) (x55 >> 0x32);
+ uint64_t x57 = ((uint64_t)x55 & 0x3ffffffffffff);
+ uint128_t x58 = (x56 + x46);
+ uint64_t x59 = (uint64_t) (x58 >> 0x31);
+ uint64_t x60 = ((uint64_t)x58 & 0x1ffffffffffff);
+ uint128_t x61 = (x59 + x45);
+ uint64_t x62 = (uint64_t) (x61 >> 0x32);
+ uint64_t x63 = ((uint64_t)x61 & 0x3ffffffffffff);
+ uint128_t x64 = (x62 + x44);
+ uint64_t x65 = (uint64_t) (x64 >> 0x31);
+ uint64_t x66 = ((uint64_t)x64 & 0x1ffffffffffff);
+ uint128_t x67 = (x65 + x43);
+ uint64_t x68 = (uint64_t) (x67 >> 0x32);
+ uint64_t x69 = ((uint64_t)x67 & 0x3ffffffffffff);
+ uint128_t x70 = (x68 + x42);
+ uint64_t x71 = (uint64_t) (x70 >> 0x31);
+ uint64_t x72 = ((uint64_t)x70 & 0x1ffffffffffff);
+ uint128_t x73 = (x71 + x41);
+ uint64_t x74 = (uint64_t) (x73 >> 0x32);
+ uint64_t x75 = ((uint64_t)x73 & 0x3ffffffffffff);
+ uint128_t x76 = (x74 + x40);
+ uint64_t x77 = (uint64_t) (x76 >> 0x31);
+ uint64_t x78 = ((uint64_t)x76 & 0x1ffffffffffff);
+ uint64_t x79 = (x51 + (0x1f * x77));
+ uint64_t x80 = (x79 >> 0x32);
+ uint64_t x81 = (x79 & 0x3ffffffffffff);
+ uint64_t x82 = (x80 + x54);
+ uint64_t x83 = (x82 >> 0x31);
+ uint64_t x84 = (x82 & 0x1ffffffffffff);
+ return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesquare.c b/src/Specific/solinas64_2e495m31_10limbs/fesquare.c
new file mode 100644
index 000000000..935bcc011
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesquare.c
@@ -0,0 +1,68 @@
+static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x19 = (((uint128_t)x2 * x17) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x17 * x2))))))))));
+ { uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x1f * (0x2 * ((uint128_t)x17 * x17))));
+ { uint128_t x21 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x1f * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
+ { uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1f * ((0x2 * ((uint128_t)x16 * x17)) + (((uint128_t)x18 * x18) + (0x2 * ((uint128_t)x17 * x16))))));
+ { uint128_t x23 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1f * (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))));
+ { uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1f * ((0x2 * ((uint128_t)x12 * x17)) + (((uint128_t)x14 * x18) + ((0x2 * ((uint128_t)x16 * x16)) + (((uint128_t)x18 * x14) + (0x2 * ((uint128_t)x17 * x12))))))));
+ { uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1f * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
+ { uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1f * ((0x2 * ((uint128_t)x8 * x17)) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (((uint128_t)x18 * x10) + (0x2 * ((uint128_t)x17 * x8))))))))));
+ { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1f * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
+ { uint128_t x28 = (((uint128_t)x2 * x2) + (0x1f * ((0x2 * ((uint128_t)x4 * x17)) + (((uint128_t)x6 * x18) + ((0x2 * ((uint128_t)x8 * x16)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + ((0x2 * ((uint128_t)x16 * x8)) + (((uint128_t)x18 * x6) + (0x2 * ((uint128_t)x17 * x4))))))))))));
+ { uint64_t x29 = (uint64_t) (x28 >> 0x32);
+ { uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffffff);
+ { uint128_t x31 = (x29 + x27);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x31);
+ { uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffff);
+ { uint128_t x34 = (x32 + x26);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x32);
+ { uint64_t x36 = ((uint64_t)x34 & 0x3ffffffffffff);
+ { uint128_t x37 = (x35 + x25);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x31);
+ { uint64_t x39 = ((uint64_t)x37 & 0x1ffffffffffff);
+ { uint128_t x40 = (x38 + x24);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x32);
+ { uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffffff);
+ { uint128_t x43 = (x41 + x23);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x31);
+ { uint64_t x45 = ((uint64_t)x43 & 0x1ffffffffffff);
+ { uint128_t x46 = (x44 + x22);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x32);
+ { uint64_t x48 = ((uint64_t)x46 & 0x3ffffffffffff);
+ { uint128_t x49 = (x47 + x21);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ { uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ { uint128_t x52 = (x50 + x20);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x32);
+ { uint64_t x54 = ((uint64_t)x52 & 0x3ffffffffffff);
+ { uint128_t x55 = (x53 + x19);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x31);
+ { uint64_t x57 = ((uint64_t)x55 & 0x1ffffffffffff);
+ { uint64_t x58 = (x30 + (0x1f * x56));
+ { uint64_t x59 = (x58 >> 0x32);
+ { uint64_t x60 = (x58 & 0x3ffffffffffff);
+ { uint64_t x61 = (x59 + x33);
+ { uint64_t x62 = (x61 >> 0x31);
+ { uint64_t x63 = (x61 & 0x1ffffffffffff);
+ out[0] = x60;
+ out[1] = x63;
+ out[2] = (x62 + x36);
+ out[3] = x39;
+ out[4] = x42;
+ out[5] = x45;
+ out[6] = x48;
+ out[7] = x51;
+ out[8] = x54;
+ out[9] = x57;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.log b/src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.log
new file mode 100644
index 000000000..43305fd0f
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.log
@@ -0,0 +1,52 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x19 = (((uint128_t)x2 * x17) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x17 * x2))))))))));
+ uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x1f * (0x2 * ((uint128_t)x17 * x17))));
+ uint128_t x21 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x1f * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
+ uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1f * ((0x2 * ((uint128_t)x16 * x17)) + (((uint128_t)x18 * x18) + (0x2 * ((uint128_t)x17 * x16))))));
+ uint128_t x23 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1f * (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))));
+ uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1f * ((0x2 * ((uint128_t)x12 * x17)) + (((uint128_t)x14 * x18) + ((0x2 * ((uint128_t)x16 * x16)) + (((uint128_t)x18 * x14) + (0x2 * ((uint128_t)x17 * x12))))))));
+ uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1f * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
+ uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1f * ((0x2 * ((uint128_t)x8 * x17)) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (((uint128_t)x18 * x10) + (0x2 * ((uint128_t)x17 * x8))))))))));
+ uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1f * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
+ uint128_t x28 = (((uint128_t)x2 * x2) + (0x1f * ((0x2 * ((uint128_t)x4 * x17)) + (((uint128_t)x6 * x18) + ((0x2 * ((uint128_t)x8 * x16)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + ((0x2 * ((uint128_t)x16 * x8)) + (((uint128_t)x18 * x6) + (0x2 * ((uint128_t)x17 * x4))))))))))));
+ uint64_t x29 = (uint64_t) (x28 >> 0x32);
+ uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffffff);
+ uint128_t x31 = (x29 + x27);
+ uint64_t x32 = (uint64_t) (x31 >> 0x31);
+ uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffff);
+ uint128_t x34 = (x32 + x26);
+ uint64_t x35 = (uint64_t) (x34 >> 0x32);
+ uint64_t x36 = ((uint64_t)x34 & 0x3ffffffffffff);
+ uint128_t x37 = (x35 + x25);
+ uint64_t x38 = (uint64_t) (x37 >> 0x31);
+ uint64_t x39 = ((uint64_t)x37 & 0x1ffffffffffff);
+ uint128_t x40 = (x38 + x24);
+ uint64_t x41 = (uint64_t) (x40 >> 0x32);
+ uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffffff);
+ uint128_t x43 = (x41 + x23);
+ uint64_t x44 = (uint64_t) (x43 >> 0x31);
+ uint64_t x45 = ((uint64_t)x43 & 0x1ffffffffffff);
+ uint128_t x46 = (x44 + x22);
+ uint64_t x47 = (uint64_t) (x46 >> 0x32);
+ uint64_t x48 = ((uint64_t)x46 & 0x3ffffffffffff);
+ uint128_t x49 = (x47 + x21);
+ uint64_t x50 = (uint64_t) (x49 >> 0x31);
+ uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffff);
+ uint128_t x52 = (x50 + x20);
+ uint64_t x53 = (uint64_t) (x52 >> 0x32);
+ uint64_t x54 = ((uint64_t)x52 & 0x3ffffffffffff);
+ uint128_t x55 = (x53 + x19);
+ uint64_t x56 = (uint64_t) (x55 >> 0x31);
+ uint64_t x57 = ((uint64_t)x55 & 0x1ffffffffffff);
+ uint64_t x58 = (x30 + (0x1f * x56));
+ uint64_t x59 = (x58 >> 0x32);
+ uint64_t x60 = (x58 & 0x3ffffffffffff);
+ uint64_t x61 = (x59 + x33);
+ uint64_t x62 = (x61 >> 0x31);
+ uint64_t x63 = (x61 & 0x1ffffffffffff);
+ return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesub.c b/src/Specific/solinas64_2e495m31_10limbs/fesub.c
new file mode 100644
index 000000000..94e344314
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesub.c
@@ -0,0 +1,33 @@
+static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x38 = in2[9];
+ { const uint64_t x39 = in2[8];
+ { const uint64_t x37 = in2[7];
+ { const uint64_t x35 = in2[6];
+ { const uint64_t x33 = in2[5];
+ { const uint64_t x31 = in2[4];
+ { const uint64_t x29 = in2[3];
+ { const uint64_t x27 = in2[2];
+ { const uint64_t x25 = in2[1];
+ { const uint64_t x23 = in2[0];
+ out[0] = ((Const 2251799813685186 + x5) - x23);
+ out[1] = ((0x3fffffffffffe + x7) - x25);
+ out[2] = ((0x7fffffffffffe + x9) - x27);
+ out[3] = ((0x3fffffffffffe + x11) - x29);
+ out[4] = ((0x7fffffffffffe + x13) - x31);
+ out[5] = ((0x3fffffffffffe + x15) - x33);
+ out[6] = ((0x7fffffffffffe + x17) - x35);
+ out[7] = ((0x3fffffffffffe + x19) - x37);
+ out[8] = ((0x7fffffffffffe + x21) - x39);
+ out[9] = ((0x3fffffffffffe + x20) - x38);
+ }}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.log b/src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.log
new file mode 100644
index 000000000..9538e5e76
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
+ (((0x3fffffffffffe + x20) - x38), ((0x7fffffffffffe + x21) - x39), ((0x3fffffffffffe + x19) - x37), ((0x7fffffffffffe + x17) - x35), ((0x3fffffffffffe + x15) - x33), ((0x7fffffffffffe + x13) - x31), ((0x3fffffffffffe + x11) - x29), ((0x7fffffffffffe + x9) - x27), ((0x3fffffffffffe + x7) - x25), ((Const 2251799813685186 + x5) - x23)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31_10limbs/freeze.c b/src/Specific/solinas64_2e495m31_10limbs/freeze.c
new file mode 100644
index 000000000..d1b038036
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/freeze.c
@@ -0,0 +1,54 @@
+static void freeze(uint64_t out[10], const uint64_t in1[10]) {
+ { const uint64_t x17 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffe1);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffffffffff);
+ { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x3ffffffffffff);
+ { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x3ffffffffffff);
+ { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffffffffff);
+ { uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x3ffffffffffff);
+ { uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x3ffffffffffff);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffffffffff);
+ { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ { uint64_t x50 = (x49 & 0x3ffffffffffe1);
+ { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ { uint64_t x54 = (x49 & 0x1ffffffffffff);
+ { uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ { uint64_t x58 = (x49 & 0x3ffffffffffff);
+ { uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ { uint64_t x62 = (x49 & 0x1ffffffffffff);
+ { uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ { uint64_t x66 = (x49 & 0x3ffffffffffff);
+ { uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ { uint64_t x70 = (x49 & 0x1ffffffffffff);
+ { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ { uint64_t x74 = (x49 & 0x3ffffffffffff);
+ { uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ { uint64_t x78 = (x49 & 0x1ffffffffffff);
+ { uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ { uint64_t x82 = (x49 & 0x3ffffffffffff);
+ { uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ { uint64_t x86 = (x49 & 0x1ffffffffffff);
+ { uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ out[0] = x52;
+ out[1] = x56;
+ out[2] = x60;
+ out[3] = x64;
+ out[4] = x68;
+ out[5] = x72;
+ out[6] = x76;
+ out[7] = x80;
+ out[8] = x84;
+ out[9] = x88;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.log b/src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.log
new file mode 100644
index 000000000..b877676f3
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.log
@@ -0,0 +1,38 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffe1);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffffffffff);
+ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x3ffffffffffff);
+ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x3ffffffffffff);
+ uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffffffffff);
+ uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x3ffffffffffff);
+ uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x3ffffffffffff);
+ uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffffffffff);
+ uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
+ uint64_t x50 = (x49 & 0x3ffffffffffe1);
+ uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
+ uint64_t x54 = (x49 & 0x1ffffffffffff);
+ uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
+ uint64_t x58 = (x49 & 0x3ffffffffffff);
+ uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
+ uint64_t x62 = (x49 & 0x1ffffffffffff);
+ uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
+ uint64_t x66 = (x49 & 0x3ffffffffffff);
+ uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
+ uint64_t x70 = (x49 & 0x1ffffffffffff);
+ uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
+ uint64_t x74 = (x49 & 0x3ffffffffffff);
+ uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
+ uint64_t x78 = (x49 & 0x1ffffffffffff);
+ uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
+ uint64_t x82 = (x49 & 0x3ffffffffffff);
+ uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
+ uint64_t x86 = (x49 & 0x1ffffffffffff);
+ uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
+ (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187_11limbs/feadd.c b/src/Specific/solinas64_2e511m187_11limbs/feadd.c
new file mode 100644
index 000000000..f810d17db
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.log b/src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..83efadb9e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187_11limbs/femul.c b/src/Specific/solinas64_2e511m187_11limbs/femul.c
new file mode 100644
index 000000000..302f33513
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ { uint128_t x44 = (((uint128_t)x5 * x42) + ((0x2 * ((uint128_t)x7 * x43)) + (((uint128_t)x9 * x41) + ((0x2 * ((uint128_t)x11 * x39)) + (((uint128_t)x13 * x37) + ((0x2 * ((uint128_t)x15 * x35)) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + (((uint128_t)x21 * x29) + ((0x2 * ((uint128_t)x23 * x27)) + ((uint128_t)x22 * x25)))))))))));
+ { uint128_t x45 = ((((uint128_t)x5 * x43) + (((uint128_t)x7 * x41) + (((uint128_t)x9 * x39) + (((uint128_t)x11 * x37) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + (((uint128_t)x21 * x27) + ((uint128_t)x23 * x25)))))))))) + (0xbb * ((uint128_t)x22 * x42)));
+ { uint128_t x46 = ((((uint128_t)x5 * x41) + ((0x2 * ((uint128_t)x7 * x39)) + (((uint128_t)x9 * x37) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + ((0x2 * ((uint128_t)x15 * x31)) + (((uint128_t)x17 * x29) + ((0x2 * ((uint128_t)x19 * x27)) + ((uint128_t)x21 * x25))))))))) + (0xbb * ((0x2 * ((uint128_t)x23 * x42)) + (0x2 * ((uint128_t)x22 * x43)))));
+ { uint128_t x47 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x19 * x25)))))))) + (0xbb * (((uint128_t)x21 * x42) + ((0x2 * ((uint128_t)x23 * x43)) + ((uint128_t)x22 * x41)))));
+ { uint128_t x48 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + ((0x2 * ((uint128_t)x11 * x31)) + (((uint128_t)x13 * x29) + ((0x2 * ((uint128_t)x15 * x27)) + ((uint128_t)x17 * x25))))))) + (0xbb * ((0x2 * ((uint128_t)x19 * x42)) + ((0x2 * ((uint128_t)x21 * x43)) + ((0x2 * ((uint128_t)x23 * x41)) + (0x2 * ((uint128_t)x22 * x39)))))));
+ { uint128_t x49 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + ((uint128_t)x15 * x25)))))) + (0xbb * (((uint128_t)x17 * x42) + ((0x2 * ((uint128_t)x19 * x43)) + (((uint128_t)x21 * x41) + ((0x2 * ((uint128_t)x23 * x39)) + ((uint128_t)x22 * x37)))))));
+ { uint128_t x50 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + (((uint128_t)x9 * x29) + ((0x2 * ((uint128_t)x11 * x27)) + ((uint128_t)x13 * x25))))) + (0xbb * ((0x2 * ((uint128_t)x15 * x42)) + ((0x2 * ((uint128_t)x17 * x43)) + ((0x2 * ((uint128_t)x19 * x41)) + ((0x2 * ((uint128_t)x21 * x39)) + ((0x2 * ((uint128_t)x23 * x37)) + (0x2 * ((uint128_t)x22 * x35)))))))));
+ { uint128_t x51 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + ((uint128_t)x11 * x25)))) + (0xbb * (((uint128_t)x13 * x42) + ((0x2 * ((uint128_t)x15 * x43)) + (((uint128_t)x17 * x41) + ((0x2 * ((uint128_t)x19 * x39)) + (((uint128_t)x21 * x37) + ((0x2 * ((uint128_t)x23 * x35)) + ((uint128_t)x22 * x33)))))))));
+ { uint128_t x52 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((uint128_t)x9 * x25))) + (0xbb * ((0x2 * ((uint128_t)x11 * x42)) + ((0x2 * ((uint128_t)x13 * x43)) + ((0x2 * ((uint128_t)x15 * x41)) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((0x2 * ((uint128_t)x23 * x33)) + (0x2 * ((uint128_t)x22 * x31)))))))))));
+ { uint128_t x53 = ((((uint128_t)x5 * x27) + ((uint128_t)x7 * x25)) + (0xbb * (((uint128_t)x9 * x42) + ((0x2 * ((uint128_t)x11 * x43)) + (((uint128_t)x13 * x41) + ((0x2 * ((uint128_t)x15 * x39)) + (((uint128_t)x17 * x37) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((0x2 * ((uint128_t)x23 * x31)) + ((uint128_t)x22 * x29)))))))))));
+ { uint128_t x54 = (((uint128_t)x5 * x25) + (0xbb * ((0x2 * ((uint128_t)x7 * x42)) + ((0x2 * ((uint128_t)x9 * x43)) + ((0x2 * ((uint128_t)x11 * x41)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + ((0x2 * ((uint128_t)x23 * x29)) + (0x2 * ((uint128_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (uint64_t) (x54 >> 0x2f);
+ { uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffff);
+ { uint128_t x57 = (x55 + x53);
+ { uint64_t x58 = (uint64_t) (x57 >> 0x2e);
+ { uint64_t x59 = ((uint64_t)x57 & 0x3fffffffffff);
+ { uint128_t x60 = (x58 + x52);
+ { uint64_t x61 = (uint64_t) (x60 >> 0x2f);
+ { uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffff);
+ { uint128_t x63 = (x61 + x51);
+ { uint64_t x64 = (uint64_t) (x63 >> 0x2e);
+ { uint64_t x65 = ((uint64_t)x63 & 0x3fffffffffff);
+ { uint128_t x66 = (x64 + x50);
+ { uint64_t x67 = (uint64_t) (x66 >> 0x2f);
+ { uint64_t x68 = ((uint64_t)x66 & 0x7fffffffffff);
+ { uint128_t x69 = (x67 + x49);
+ { uint64_t x70 = (uint64_t) (x69 >> 0x2e);
+ { uint64_t x71 = ((uint64_t)x69 & 0x3fffffffffff);
+ { uint128_t x72 = (x70 + x48);
+ { uint64_t x73 = (uint64_t) (x72 >> 0x2f);
+ { uint64_t x74 = ((uint64_t)x72 & 0x7fffffffffff);
+ { uint128_t x75 = (x73 + x47);
+ { uint64_t x76 = (uint64_t) (x75 >> 0x2e);
+ { uint64_t x77 = ((uint64_t)x75 & 0x3fffffffffff);
+ { uint128_t x78 = (x76 + x46);
+ { uint64_t x79 = (uint64_t) (x78 >> 0x2f);
+ { uint64_t x80 = ((uint64_t)x78 & 0x7fffffffffff);
+ { uint128_t x81 = (x79 + x45);
+ { uint64_t x82 = (uint64_t) (x81 >> 0x2e);
+ { uint64_t x83 = ((uint64_t)x81 & 0x3fffffffffff);
+ { uint128_t x84 = (x82 + x44);
+ { uint64_t x85 = (uint64_t) (x84 >> 0x2e);
+ { uint64_t x86 = ((uint64_t)x84 & 0x3fffffffffff);
+ { uint64_t x87 = (x56 + (0xbb * x85));
+ { uint64_t x88 = (x87 >> 0x2f);
+ { uint64_t x89 = (x87 & 0x7fffffffffff);
+ { uint64_t x90 = (x88 + x59);
+ { uint64_t x91 = (x90 >> 0x2e);
+ { uint64_t x92 = (x90 & 0x3fffffffffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m187_11limbs/femulDisplay.log b/src/Specific/solinas64_2e511m187_11limbs/femulDisplay.log
new file mode 100644
index 000000000..6f8370c5e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint128_t x44 = (((uint128_t)x5 * x42) + ((0x2 * ((uint128_t)x7 * x43)) + (((uint128_t)x9 * x41) + ((0x2 * ((uint128_t)x11 * x39)) + (((uint128_t)x13 * x37) + ((0x2 * ((uint128_t)x15 * x35)) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + (((uint128_t)x21 * x29) + ((0x2 * ((uint128_t)x23 * x27)) + ((uint128_t)x22 * x25)))))))))));
+ uint128_t x45 = ((((uint128_t)x5 * x43) + (((uint128_t)x7 * x41) + (((uint128_t)x9 * x39) + (((uint128_t)x11 * x37) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + (((uint128_t)x21 * x27) + ((uint128_t)x23 * x25)))))))))) + (0xbb * ((uint128_t)x22 * x42)));
+ uint128_t x46 = ((((uint128_t)x5 * x41) + ((0x2 * ((uint128_t)x7 * x39)) + (((uint128_t)x9 * x37) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + ((0x2 * ((uint128_t)x15 * x31)) + (((uint128_t)x17 * x29) + ((0x2 * ((uint128_t)x19 * x27)) + ((uint128_t)x21 * x25))))))))) + (0xbb * ((0x2 * ((uint128_t)x23 * x42)) + (0x2 * ((uint128_t)x22 * x43)))));
+ uint128_t x47 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x19 * x25)))))))) + (0xbb * (((uint128_t)x21 * x42) + ((0x2 * ((uint128_t)x23 * x43)) + ((uint128_t)x22 * x41)))));
+ uint128_t x48 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + ((0x2 * ((uint128_t)x11 * x31)) + (((uint128_t)x13 * x29) + ((0x2 * ((uint128_t)x15 * x27)) + ((uint128_t)x17 * x25))))))) + (0xbb * ((0x2 * ((uint128_t)x19 * x42)) + ((0x2 * ((uint128_t)x21 * x43)) + ((0x2 * ((uint128_t)x23 * x41)) + (0x2 * ((uint128_t)x22 * x39)))))));
+ uint128_t x49 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + ((uint128_t)x15 * x25)))))) + (0xbb * (((uint128_t)x17 * x42) + ((0x2 * ((uint128_t)x19 * x43)) + (((uint128_t)x21 * x41) + ((0x2 * ((uint128_t)x23 * x39)) + ((uint128_t)x22 * x37)))))));
+ uint128_t x50 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + (((uint128_t)x9 * x29) + ((0x2 * ((uint128_t)x11 * x27)) + ((uint128_t)x13 * x25))))) + (0xbb * ((0x2 * ((uint128_t)x15 * x42)) + ((0x2 * ((uint128_t)x17 * x43)) + ((0x2 * ((uint128_t)x19 * x41)) + ((0x2 * ((uint128_t)x21 * x39)) + ((0x2 * ((uint128_t)x23 * x37)) + (0x2 * ((uint128_t)x22 * x35)))))))));
+ uint128_t x51 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + ((uint128_t)x11 * x25)))) + (0xbb * (((uint128_t)x13 * x42) + ((0x2 * ((uint128_t)x15 * x43)) + (((uint128_t)x17 * x41) + ((0x2 * ((uint128_t)x19 * x39)) + (((uint128_t)x21 * x37) + ((0x2 * ((uint128_t)x23 * x35)) + ((uint128_t)x22 * x33)))))))));
+ uint128_t x52 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((uint128_t)x9 * x25))) + (0xbb * ((0x2 * ((uint128_t)x11 * x42)) + ((0x2 * ((uint128_t)x13 * x43)) + ((0x2 * ((uint128_t)x15 * x41)) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((0x2 * ((uint128_t)x23 * x33)) + (0x2 * ((uint128_t)x22 * x31)))))))))));
+ uint128_t x53 = ((((uint128_t)x5 * x27) + ((uint128_t)x7 * x25)) + (0xbb * (((uint128_t)x9 * x42) + ((0x2 * ((uint128_t)x11 * x43)) + (((uint128_t)x13 * x41) + ((0x2 * ((uint128_t)x15 * x39)) + (((uint128_t)x17 * x37) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((0x2 * ((uint128_t)x23 * x31)) + ((uint128_t)x22 * x29)))))))))));
+ uint128_t x54 = (((uint128_t)x5 * x25) + (0xbb * ((0x2 * ((uint128_t)x7 * x42)) + ((0x2 * ((uint128_t)x9 * x43)) + ((0x2 * ((uint128_t)x11 * x41)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + ((0x2 * ((uint128_t)x23 * x29)) + (0x2 * ((uint128_t)x22 * x27)))))))))))));
+ uint64_t x55 = (uint64_t) (x54 >> 0x2f);
+ uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffff);
+ uint128_t x57 = (x55 + x53);
+ uint64_t x58 = (uint64_t) (x57 >> 0x2e);
+ uint64_t x59 = ((uint64_t)x57 & 0x3fffffffffff);
+ uint128_t x60 = (x58 + x52);
+ uint64_t x61 = (uint64_t) (x60 >> 0x2f);
+ uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffff);
+ uint128_t x63 = (x61 + x51);
+ uint64_t x64 = (uint64_t) (x63 >> 0x2e);
+ uint64_t x65 = ((uint64_t)x63 & 0x3fffffffffff);
+ uint128_t x66 = (x64 + x50);
+ uint64_t x67 = (uint64_t) (x66 >> 0x2f);
+ uint64_t x68 = ((uint64_t)x66 & 0x7fffffffffff);
+ uint128_t x69 = (x67 + x49);
+ uint64_t x70 = (uint64_t) (x69 >> 0x2e);
+ uint64_t x71 = ((uint64_t)x69 & 0x3fffffffffff);
+ uint128_t x72 = (x70 + x48);
+ uint64_t x73 = (uint64_t) (x72 >> 0x2f);
+ uint64_t x74 = ((uint64_t)x72 & 0x7fffffffffff);
+ uint128_t x75 = (x73 + x47);
+ uint64_t x76 = (uint64_t) (x75 >> 0x2e);
+ uint64_t x77 = ((uint64_t)x75 & 0x3fffffffffff);
+ uint128_t x78 = (x76 + x46);
+ uint64_t x79 = (uint64_t) (x78 >> 0x2f);
+ uint64_t x80 = ((uint64_t)x78 & 0x7fffffffffff);
+ uint128_t x81 = (x79 + x45);
+ uint64_t x82 = (uint64_t) (x81 >> 0x2e);
+ uint64_t x83 = ((uint64_t)x81 & 0x3fffffffffff);
+ uint128_t x84 = (x82 + x44);
+ uint64_t x85 = (uint64_t) (x84 >> 0x2e);
+ uint64_t x86 = ((uint64_t)x84 & 0x3fffffffffff);
+ uint64_t x87 = (x56 + (0xbb * x85));
+ uint64_t x88 = (x87 >> 0x2f);
+ uint64_t x89 = (x87 & 0x7fffffffffff);
+ uint64_t x90 = (x88 + x59);
+ uint64_t x91 = (x90 >> 0x2e);
+ uint64_t x92 = (x90 & 0x3fffffffffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesquare.c b/src/Specific/solinas64_2e511m187_11limbs/fesquare.c
new file mode 100644
index 000000000..c60544c56
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint64_t out[11], const uint64_t in1[11]) {
+ { const uint64_t x19 = in1[10];
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x21 = (((uint128_t)x2 * x19) + ((0x2 * ((uint128_t)x4 * x20)) + (((uint128_t)x6 * x18) + ((0x2 * ((uint128_t)x8 * x16)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + ((0x2 * ((uint128_t)x16 * x8)) + (((uint128_t)x18 * x6) + ((0x2 * ((uint128_t)x20 * x4)) + ((uint128_t)x19 * x2)))))))))));
+ { uint128_t x22 = ((((uint128_t)x2 * x20) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x20 * x2)))))))))) + (0xbb * ((uint128_t)x19 * x19)));
+ { uint128_t x23 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0xbb * ((0x2 * ((uint128_t)x20 * x19)) + (0x2 * ((uint128_t)x19 * x20)))));
+ { uint128_t x24 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0xbb * (((uint128_t)x18 * x19) + ((0x2 * ((uint128_t)x20 * x20)) + ((uint128_t)x19 * x18)))));
+ { uint128_t x25 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0xbb * ((0x2 * ((uint128_t)x16 * x19)) + ((0x2 * ((uint128_t)x18 * x20)) + ((0x2 * ((uint128_t)x20 * x18)) + (0x2 * ((uint128_t)x19 * x16)))))));
+ { uint128_t x26 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0xbb * (((uint128_t)x14 * x19) + ((0x2 * ((uint128_t)x16 * x20)) + (((uint128_t)x18 * x18) + ((0x2 * ((uint128_t)x20 * x16)) + ((uint128_t)x19 * x14)))))));
+ { uint128_t x27 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0xbb * ((0x2 * ((uint128_t)x12 * x19)) + ((0x2 * ((uint128_t)x14 * x20)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + ((0x2 * ((uint128_t)x20 * x14)) + (0x2 * ((uint128_t)x19 * x12)))))))));
+ { uint128_t x28 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0xbb * (((uint128_t)x10 * x19) + ((0x2 * ((uint128_t)x12 * x20)) + (((uint128_t)x14 * x18) + ((0x2 * ((uint128_t)x16 * x16)) + (((uint128_t)x18 * x14) + ((0x2 * ((uint128_t)x20 * x12)) + ((uint128_t)x19 * x10)))))))));
+ { uint128_t x29 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xbb * ((0x2 * ((uint128_t)x8 * x19)) + ((0x2 * ((uint128_t)x10 * x20)) + ((0x2 * ((uint128_t)x12 * x18)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + ((0x2 * ((uint128_t)x18 * x12)) + ((0x2 * ((uint128_t)x20 * x10)) + (0x2 * ((uint128_t)x19 * x8)))))))))));
+ { uint128_t x30 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbb * (((uint128_t)x6 * x19) + ((0x2 * ((uint128_t)x8 * x20)) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (((uint128_t)x18 * x10) + ((0x2 * ((uint128_t)x20 * x8)) + ((uint128_t)x19 * x6)))))))))));
+ { uint128_t x31 = (((uint128_t)x2 * x2) + (0xbb * ((0x2 * ((uint128_t)x4 * x19)) + ((0x2 * ((uint128_t)x6 * x20)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + ((0x2 * ((uint128_t)x20 * x6)) + (0x2 * ((uint128_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ { uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ { uint128_t x34 = (x32 + x30);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x2e);
+ { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
+ { uint128_t x37 = (x35 + x29);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x2f);
+ { uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffff);
+ { uint128_t x40 = (x38 + x28);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x2e);
+ { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
+ { uint128_t x43 = (x41 + x27);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x2f);
+ { uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffff);
+ { uint128_t x46 = (x44 + x26);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x2e);
+ { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffff);
+ { uint128_t x49 = (x47 + x25);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x2f);
+ { uint64_t x51 = ((uint64_t)x49 & 0x7fffffffffff);
+ { uint128_t x52 = (x50 + x24);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x2e);
+ { uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffff);
+ { uint128_t x55 = (x53 + x23);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x2f);
+ { uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffff);
+ { uint128_t x58 = (x56 + x22);
+ { uint64_t x59 = (uint64_t) (x58 >> 0x2e);
+ { uint64_t x60 = ((uint64_t)x58 & 0x3fffffffffff);
+ { uint128_t x61 = (x59 + x21);
+ { uint64_t x62 = (uint64_t) (x61 >> 0x2e);
+ { uint64_t x63 = ((uint64_t)x61 & 0x3fffffffffff);
+ { uint64_t x64 = (x33 + (0xbb * x62));
+ { uint64_t x65 = (x64 >> 0x2f);
+ { uint64_t x66 = (x64 & 0x7fffffffffff);
+ { uint64_t x67 = (x65 + x36);
+ { uint64_t x68 = (x67 >> 0x2e);
+ { uint64_t x69 = (x67 & 0x3fffffffffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.log b/src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..53f47cf6b
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x21 = (((uint128_t)x2 * x19) + ((0x2 * ((uint128_t)x4 * x20)) + (((uint128_t)x6 * x18) + ((0x2 * ((uint128_t)x8 * x16)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + ((0x2 * ((uint128_t)x16 * x8)) + (((uint128_t)x18 * x6) + ((0x2 * ((uint128_t)x20 * x4)) + ((uint128_t)x19 * x2)))))))))));
+ uint128_t x22 = ((((uint128_t)x2 * x20) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x20 * x2)))))))))) + (0xbb * ((uint128_t)x19 * x19)));
+ uint128_t x23 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0xbb * ((0x2 * ((uint128_t)x20 * x19)) + (0x2 * ((uint128_t)x19 * x20)))));
+ uint128_t x24 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0xbb * (((uint128_t)x18 * x19) + ((0x2 * ((uint128_t)x20 * x20)) + ((uint128_t)x19 * x18)))));
+ uint128_t x25 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0xbb * ((0x2 * ((uint128_t)x16 * x19)) + ((0x2 * ((uint128_t)x18 * x20)) + ((0x2 * ((uint128_t)x20 * x18)) + (0x2 * ((uint128_t)x19 * x16)))))));
+ uint128_t x26 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0xbb * (((uint128_t)x14 * x19) + ((0x2 * ((uint128_t)x16 * x20)) + (((uint128_t)x18 * x18) + ((0x2 * ((uint128_t)x20 * x16)) + ((uint128_t)x19 * x14)))))));
+ uint128_t x27 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0xbb * ((0x2 * ((uint128_t)x12 * x19)) + ((0x2 * ((uint128_t)x14 * x20)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + ((0x2 * ((uint128_t)x20 * x14)) + (0x2 * ((uint128_t)x19 * x12)))))))));
+ uint128_t x28 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0xbb * (((uint128_t)x10 * x19) + ((0x2 * ((uint128_t)x12 * x20)) + (((uint128_t)x14 * x18) + ((0x2 * ((uint128_t)x16 * x16)) + (((uint128_t)x18 * x14) + ((0x2 * ((uint128_t)x20 * x12)) + ((uint128_t)x19 * x10)))))))));
+ uint128_t x29 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xbb * ((0x2 * ((uint128_t)x8 * x19)) + ((0x2 * ((uint128_t)x10 * x20)) + ((0x2 * ((uint128_t)x12 * x18)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + ((0x2 * ((uint128_t)x18 * x12)) + ((0x2 * ((uint128_t)x20 * x10)) + (0x2 * ((uint128_t)x19 * x8)))))))))));
+ uint128_t x30 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbb * (((uint128_t)x6 * x19) + ((0x2 * ((uint128_t)x8 * x20)) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (((uint128_t)x18 * x10) + ((0x2 * ((uint128_t)x20 * x8)) + ((uint128_t)x19 * x6)))))))))));
+ uint128_t x31 = (((uint128_t)x2 * x2) + (0xbb * ((0x2 * ((uint128_t)x4 * x19)) + ((0x2 * ((uint128_t)x6 * x20)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + ((0x2 * ((uint128_t)x20 * x6)) + (0x2 * ((uint128_t)x19 * x4)))))))))))));
+ uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ uint128_t x34 = (x32 + x30);
+ uint64_t x35 = (uint64_t) (x34 >> 0x2e);
+ uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
+ uint128_t x37 = (x35 + x29);
+ uint64_t x38 = (uint64_t) (x37 >> 0x2f);
+ uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffff);
+ uint128_t x40 = (x38 + x28);
+ uint64_t x41 = (uint64_t) (x40 >> 0x2e);
+ uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
+ uint128_t x43 = (x41 + x27);
+ uint64_t x44 = (uint64_t) (x43 >> 0x2f);
+ uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffff);
+ uint128_t x46 = (x44 + x26);
+ uint64_t x47 = (uint64_t) (x46 >> 0x2e);
+ uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffff);
+ uint128_t x49 = (x47 + x25);
+ uint64_t x50 = (uint64_t) (x49 >> 0x2f);
+ uint64_t x51 = ((uint64_t)x49 & 0x7fffffffffff);
+ uint128_t x52 = (x50 + x24);
+ uint64_t x53 = (uint64_t) (x52 >> 0x2e);
+ uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffff);
+ uint128_t x55 = (x53 + x23);
+ uint64_t x56 = (uint64_t) (x55 >> 0x2f);
+ uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffff);
+ uint128_t x58 = (x56 + x22);
+ uint64_t x59 = (uint64_t) (x58 >> 0x2e);
+ uint64_t x60 = ((uint64_t)x58 & 0x3fffffffffff);
+ uint128_t x61 = (x59 + x21);
+ uint64_t x62 = (uint64_t) (x61 >> 0x2e);
+ uint64_t x63 = ((uint64_t)x61 & 0x3fffffffffff);
+ uint64_t x64 = (x33 + (0xbb * x62));
+ uint64_t x65 = (x64 >> 0x2f);
+ uint64_t x66 = (x64 & 0x7fffffffffff);
+ uint64_t x67 = (x65 + x36);
+ uint64_t x68 = (x67 >> 0x2e);
+ uint64_t x69 = (x67 & 0x3fffffffffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesub.c b/src/Specific/solinas64_2e511m187_11limbs/fesub.c
new file mode 100644
index 000000000..fdf32b3cd
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ out[0] = ((Const 281474976710282 + x5) - x25);
+ out[1] = ((0x7ffffffffffe + x7) - x27);
+ out[2] = ((0xfffffffffffe + x9) - x29);
+ out[3] = ((0x7ffffffffffe + x11) - x31);
+ out[4] = ((0xfffffffffffe + x13) - x33);
+ out[5] = ((0x7ffffffffffe + x15) - x35);
+ out[6] = ((0xfffffffffffe + x17) - x37);
+ out[7] = ((0x7ffffffffffe + x19) - x39);
+ out[8] = ((0xfffffffffffe + x21) - x41);
+ out[9] = ((0x7ffffffffffe + x23) - x43);
+ out[10] = ((0x7ffffffffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.log b/src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..b3473cc88
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0x7ffffffffffe + x22) - x42), ((0x7ffffffffffe + x23) - x43), ((0xfffffffffffe + x21) - x41), ((0x7ffffffffffe + x19) - x39), ((0xfffffffffffe + x17) - x37), ((0x7ffffffffffe + x15) - x35), ((0xfffffffffffe + x13) - x33), ((0x7ffffffffffe + x11) - x31), ((0xfffffffffffe + x9) - x29), ((0x7ffffffffffe + x7) - x27), ((Const 281474976710282 + x5) - x25)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187_11limbs/freeze.c b/src/Specific/solinas64_2e511m187_11limbs/freeze.c
new file mode 100644
index 000000000..2358ab8a1
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint64_t out[11], const uint64_t in1[11]) {
+ { const uint64_t x19 = in1[10];
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488355141);
+ { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x4, 0x3fffffffffff);
+ { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffffffffff);
+ { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x8, 0x3fffffffffff);
+ { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffffffffff);
+ { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x12, 0x3fffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffffffffff);
+ { uint64_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x16, 0x3fffffffffff);
+ { uint64_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffffffffff);
+ { uint64_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x20, 0x3fffffffffff);
+ { uint64_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffffffffff);
+ { uint64_t x54 = cmovznz64(x53, 0x0, 0xffffffffffffffffL);
+ { uint64_t x55 = (x54 & Const 140737488355141);
+ { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint64_t x59 = (x54 & 0x3fffffffffff);
+ { uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint64_t x63 = (x54 & 0x7fffffffffff);
+ { uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint64_t x67 = (x54 & 0x3fffffffffff);
+ { uint64_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint64_t x71 = (x54 & 0x7fffffffffff);
+ { uint64_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint64_t x75 = (x54 & 0x3fffffffffff);
+ { uint64_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint64_t x79 = (x54 & 0x7fffffffffff);
+ { uint64_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint64_t x83 = (x54 & 0x3fffffffffff);
+ { uint64_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint64_t x87 = (x54 & 0x7fffffffffff);
+ { uint64_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint64_t x91 = (x54 & 0x3fffffffffff);
+ { uint64_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint64_t x95 = (x54 & 0x3fffffffffff);
+ { uint64_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.log b/src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..bf3d4cd56
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488355141);
+ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x4, 0x3fffffffffff);
+ uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffffffffff);
+ uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x8, 0x3fffffffffff);
+ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffffffffff);
+ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x12, 0x3fffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffffffffff);
+ uint64_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x16, 0x3fffffffffff);
+ uint64_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffffffffff);
+ uint64_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x20, 0x3fffffffffff);
+ uint64_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffffffffff);
+ uint64_t x54 = cmovznz64(x53, 0x0, 0xffffffffffffffffL);
+ uint64_t x55 = (x54 & Const 140737488355141);
+ uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint64_t x59 = (x54 & 0x3fffffffffff);
+ uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint64_t x63 = (x54 & 0x7fffffffffff);
+ uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint64_t x67 = (x54 & 0x3fffffffffff);
+ uint64_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint64_t x71 = (x54 & 0x7fffffffffff);
+ uint64_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint64_t x75 = (x54 & 0x3fffffffffff);
+ uint64_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint64_t x79 = (x54 & 0x7fffffffffff);
+ uint64_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint64_t x83 = (x54 & 0x3fffffffffff);
+ uint64_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint64_t x87 = (x54 & 0x7fffffffffff);
+ uint64_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint64_t x91 = (x54 & 0x3fffffffffff);
+ uint64_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint64_t x95 = (x54 & 0x3fffffffffff);
+ uint64_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481_11limbs/feadd.c b/src/Specific/solinas64_2e511m481_11limbs/feadd.c
new file mode 100644
index 000000000..f810d17db
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.log b/src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..83efadb9e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481_11limbs/femul.c b/src/Specific/solinas64_2e511m481_11limbs/femul.c
new file mode 100644
index 000000000..0cfc49d83
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ { uint128_t x44 = (((uint128_t)x5 * x42) + ((0x2 * ((uint128_t)x7 * x43)) + (((uint128_t)x9 * x41) + ((0x2 * ((uint128_t)x11 * x39)) + (((uint128_t)x13 * x37) + ((0x2 * ((uint128_t)x15 * x35)) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + (((uint128_t)x21 * x29) + ((0x2 * ((uint128_t)x23 * x27)) + ((uint128_t)x22 * x25)))))))))));
+ { uint128_t x45 = ((((uint128_t)x5 * x43) + (((uint128_t)x7 * x41) + (((uint128_t)x9 * x39) + (((uint128_t)x11 * x37) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + (((uint128_t)x21 * x27) + ((uint128_t)x23 * x25)))))))))) + (0x1e1 * ((uint128_t)x22 * x42)));
+ { uint128_t x46 = ((((uint128_t)x5 * x41) + ((0x2 * ((uint128_t)x7 * x39)) + (((uint128_t)x9 * x37) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + ((0x2 * ((uint128_t)x15 * x31)) + (((uint128_t)x17 * x29) + ((0x2 * ((uint128_t)x19 * x27)) + ((uint128_t)x21 * x25))))))))) + (0x1e1 * ((0x2 * ((uint128_t)x23 * x42)) + (0x2 * ((uint128_t)x22 * x43)))));
+ { uint128_t x47 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x19 * x25)))))))) + (0x1e1 * (((uint128_t)x21 * x42) + ((0x2 * ((uint128_t)x23 * x43)) + ((uint128_t)x22 * x41)))));
+ { uint128_t x48 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + ((0x2 * ((uint128_t)x11 * x31)) + (((uint128_t)x13 * x29) + ((0x2 * ((uint128_t)x15 * x27)) + ((uint128_t)x17 * x25))))))) + (0x1e1 * ((0x2 * ((uint128_t)x19 * x42)) + ((0x2 * ((uint128_t)x21 * x43)) + ((0x2 * ((uint128_t)x23 * x41)) + (0x2 * ((uint128_t)x22 * x39)))))));
+ { uint128_t x49 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + ((uint128_t)x15 * x25)))))) + (0x1e1 * (((uint128_t)x17 * x42) + ((0x2 * ((uint128_t)x19 * x43)) + (((uint128_t)x21 * x41) + ((0x2 * ((uint128_t)x23 * x39)) + ((uint128_t)x22 * x37)))))));
+ { uint128_t x50 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + (((uint128_t)x9 * x29) + ((0x2 * ((uint128_t)x11 * x27)) + ((uint128_t)x13 * x25))))) + (0x1e1 * ((0x2 * ((uint128_t)x15 * x42)) + ((0x2 * ((uint128_t)x17 * x43)) + ((0x2 * ((uint128_t)x19 * x41)) + ((0x2 * ((uint128_t)x21 * x39)) + ((0x2 * ((uint128_t)x23 * x37)) + (0x2 * ((uint128_t)x22 * x35)))))))));
+ { uint128_t x51 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + ((uint128_t)x11 * x25)))) + (0x1e1 * (((uint128_t)x13 * x42) + ((0x2 * ((uint128_t)x15 * x43)) + (((uint128_t)x17 * x41) + ((0x2 * ((uint128_t)x19 * x39)) + (((uint128_t)x21 * x37) + ((0x2 * ((uint128_t)x23 * x35)) + ((uint128_t)x22 * x33)))))))));
+ { uint128_t x52 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((uint128_t)x9 * x25))) + (0x1e1 * ((0x2 * ((uint128_t)x11 * x42)) + ((0x2 * ((uint128_t)x13 * x43)) + ((0x2 * ((uint128_t)x15 * x41)) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((0x2 * ((uint128_t)x23 * x33)) + (0x2 * ((uint128_t)x22 * x31)))))))))));
+ { uint128_t x53 = ((((uint128_t)x5 * x27) + ((uint128_t)x7 * x25)) + (0x1e1 * (((uint128_t)x9 * x42) + ((0x2 * ((uint128_t)x11 * x43)) + (((uint128_t)x13 * x41) + ((0x2 * ((uint128_t)x15 * x39)) + (((uint128_t)x17 * x37) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((0x2 * ((uint128_t)x23 * x31)) + ((uint128_t)x22 * x29)))))))))));
+ { uint128_t x54 = (((uint128_t)x5 * x25) + (0x1e1 * ((0x2 * ((uint128_t)x7 * x42)) + ((0x2 * ((uint128_t)x9 * x43)) + ((0x2 * ((uint128_t)x11 * x41)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + ((0x2 * ((uint128_t)x23 * x29)) + (0x2 * ((uint128_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (uint64_t) (x54 >> 0x2f);
+ { uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffff);
+ { uint128_t x57 = (x55 + x53);
+ { uint64_t x58 = (uint64_t) (x57 >> 0x2e);
+ { uint64_t x59 = ((uint64_t)x57 & 0x3fffffffffff);
+ { uint128_t x60 = (x58 + x52);
+ { uint64_t x61 = (uint64_t) (x60 >> 0x2f);
+ { uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffff);
+ { uint128_t x63 = (x61 + x51);
+ { uint64_t x64 = (uint64_t) (x63 >> 0x2e);
+ { uint64_t x65 = ((uint64_t)x63 & 0x3fffffffffff);
+ { uint128_t x66 = (x64 + x50);
+ { uint64_t x67 = (uint64_t) (x66 >> 0x2f);
+ { uint64_t x68 = ((uint64_t)x66 & 0x7fffffffffff);
+ { uint128_t x69 = (x67 + x49);
+ { uint64_t x70 = (uint64_t) (x69 >> 0x2e);
+ { uint64_t x71 = ((uint64_t)x69 & 0x3fffffffffff);
+ { uint128_t x72 = (x70 + x48);
+ { uint64_t x73 = (uint64_t) (x72 >> 0x2f);
+ { uint64_t x74 = ((uint64_t)x72 & 0x7fffffffffff);
+ { uint128_t x75 = (x73 + x47);
+ { uint64_t x76 = (uint64_t) (x75 >> 0x2e);
+ { uint64_t x77 = ((uint64_t)x75 & 0x3fffffffffff);
+ { uint128_t x78 = (x76 + x46);
+ { uint64_t x79 = (uint64_t) (x78 >> 0x2f);
+ { uint64_t x80 = ((uint64_t)x78 & 0x7fffffffffff);
+ { uint128_t x81 = (x79 + x45);
+ { uint64_t x82 = (uint64_t) (x81 >> 0x2e);
+ { uint64_t x83 = ((uint64_t)x81 & 0x3fffffffffff);
+ { uint128_t x84 = (x82 + x44);
+ { uint64_t x85 = (uint64_t) (x84 >> 0x2e);
+ { uint64_t x86 = ((uint64_t)x84 & 0x3fffffffffff);
+ { uint64_t x87 = (x56 + (0x1e1 * x85));
+ { uint64_t x88 = (x87 >> 0x2f);
+ { uint64_t x89 = (x87 & 0x7fffffffffff);
+ { uint64_t x90 = (x88 + x59);
+ { uint64_t x91 = (x90 >> 0x2e);
+ { uint64_t x92 = (x90 & 0x3fffffffffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m481_11limbs/femulDisplay.log b/src/Specific/solinas64_2e511m481_11limbs/femulDisplay.log
new file mode 100644
index 000000000..47fff87da
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint128_t x44 = (((uint128_t)x5 * x42) + ((0x2 * ((uint128_t)x7 * x43)) + (((uint128_t)x9 * x41) + ((0x2 * ((uint128_t)x11 * x39)) + (((uint128_t)x13 * x37) + ((0x2 * ((uint128_t)x15 * x35)) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + (((uint128_t)x21 * x29) + ((0x2 * ((uint128_t)x23 * x27)) + ((uint128_t)x22 * x25)))))))))));
+ uint128_t x45 = ((((uint128_t)x5 * x43) + (((uint128_t)x7 * x41) + (((uint128_t)x9 * x39) + (((uint128_t)x11 * x37) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + (((uint128_t)x21 * x27) + ((uint128_t)x23 * x25)))))))))) + (0x1e1 * ((uint128_t)x22 * x42)));
+ uint128_t x46 = ((((uint128_t)x5 * x41) + ((0x2 * ((uint128_t)x7 * x39)) + (((uint128_t)x9 * x37) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + ((0x2 * ((uint128_t)x15 * x31)) + (((uint128_t)x17 * x29) + ((0x2 * ((uint128_t)x19 * x27)) + ((uint128_t)x21 * x25))))))))) + (0x1e1 * ((0x2 * ((uint128_t)x23 * x42)) + (0x2 * ((uint128_t)x22 * x43)))));
+ uint128_t x47 = ((((uint128_t)x5 * x39) + (((uint128_t)x7 * x37) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x19 * x25)))))))) + (0x1e1 * (((uint128_t)x21 * x42) + ((0x2 * ((uint128_t)x23 * x43)) + ((uint128_t)x22 * x41)))));
+ uint128_t x48 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + ((0x2 * ((uint128_t)x11 * x31)) + (((uint128_t)x13 * x29) + ((0x2 * ((uint128_t)x15 * x27)) + ((uint128_t)x17 * x25))))))) + (0x1e1 * ((0x2 * ((uint128_t)x19 * x42)) + ((0x2 * ((uint128_t)x21 * x43)) + ((0x2 * ((uint128_t)x23 * x41)) + (0x2 * ((uint128_t)x22 * x39)))))));
+ uint128_t x49 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + ((uint128_t)x15 * x25)))))) + (0x1e1 * (((uint128_t)x17 * x42) + ((0x2 * ((uint128_t)x19 * x43)) + (((uint128_t)x21 * x41) + ((0x2 * ((uint128_t)x23 * x39)) + ((uint128_t)x22 * x37)))))));
+ uint128_t x50 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + (((uint128_t)x9 * x29) + ((0x2 * ((uint128_t)x11 * x27)) + ((uint128_t)x13 * x25))))) + (0x1e1 * ((0x2 * ((uint128_t)x15 * x42)) + ((0x2 * ((uint128_t)x17 * x43)) + ((0x2 * ((uint128_t)x19 * x41)) + ((0x2 * ((uint128_t)x21 * x39)) + ((0x2 * ((uint128_t)x23 * x37)) + (0x2 * ((uint128_t)x22 * x35)))))))));
+ uint128_t x51 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + ((uint128_t)x11 * x25)))) + (0x1e1 * (((uint128_t)x13 * x42) + ((0x2 * ((uint128_t)x15 * x43)) + (((uint128_t)x17 * x41) + ((0x2 * ((uint128_t)x19 * x39)) + (((uint128_t)x21 * x37) + ((0x2 * ((uint128_t)x23 * x35)) + ((uint128_t)x22 * x33)))))))));
+ uint128_t x52 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((uint128_t)x9 * x25))) + (0x1e1 * ((0x2 * ((uint128_t)x11 * x42)) + ((0x2 * ((uint128_t)x13 * x43)) + ((0x2 * ((uint128_t)x15 * x41)) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((0x2 * ((uint128_t)x23 * x33)) + (0x2 * ((uint128_t)x22 * x31)))))))))));
+ uint128_t x53 = ((((uint128_t)x5 * x27) + ((uint128_t)x7 * x25)) + (0x1e1 * (((uint128_t)x9 * x42) + ((0x2 * ((uint128_t)x11 * x43)) + (((uint128_t)x13 * x41) + ((0x2 * ((uint128_t)x15 * x39)) + (((uint128_t)x17 * x37) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((0x2 * ((uint128_t)x23 * x31)) + ((uint128_t)x22 * x29)))))))))));
+ uint128_t x54 = (((uint128_t)x5 * x25) + (0x1e1 * ((0x2 * ((uint128_t)x7 * x42)) + ((0x2 * ((uint128_t)x9 * x43)) + ((0x2 * ((uint128_t)x11 * x41)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + ((0x2 * ((uint128_t)x23 * x29)) + (0x2 * ((uint128_t)x22 * x27)))))))))))));
+ uint64_t x55 = (uint64_t) (x54 >> 0x2f);
+ uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffff);
+ uint128_t x57 = (x55 + x53);
+ uint64_t x58 = (uint64_t) (x57 >> 0x2e);
+ uint64_t x59 = ((uint64_t)x57 & 0x3fffffffffff);
+ uint128_t x60 = (x58 + x52);
+ uint64_t x61 = (uint64_t) (x60 >> 0x2f);
+ uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffff);
+ uint128_t x63 = (x61 + x51);
+ uint64_t x64 = (uint64_t) (x63 >> 0x2e);
+ uint64_t x65 = ((uint64_t)x63 & 0x3fffffffffff);
+ uint128_t x66 = (x64 + x50);
+ uint64_t x67 = (uint64_t) (x66 >> 0x2f);
+ uint64_t x68 = ((uint64_t)x66 & 0x7fffffffffff);
+ uint128_t x69 = (x67 + x49);
+ uint64_t x70 = (uint64_t) (x69 >> 0x2e);
+ uint64_t x71 = ((uint64_t)x69 & 0x3fffffffffff);
+ uint128_t x72 = (x70 + x48);
+ uint64_t x73 = (uint64_t) (x72 >> 0x2f);
+ uint64_t x74 = ((uint64_t)x72 & 0x7fffffffffff);
+ uint128_t x75 = (x73 + x47);
+ uint64_t x76 = (uint64_t) (x75 >> 0x2e);
+ uint64_t x77 = ((uint64_t)x75 & 0x3fffffffffff);
+ uint128_t x78 = (x76 + x46);
+ uint64_t x79 = (uint64_t) (x78 >> 0x2f);
+ uint64_t x80 = ((uint64_t)x78 & 0x7fffffffffff);
+ uint128_t x81 = (x79 + x45);
+ uint64_t x82 = (uint64_t) (x81 >> 0x2e);
+ uint64_t x83 = ((uint64_t)x81 & 0x3fffffffffff);
+ uint128_t x84 = (x82 + x44);
+ uint64_t x85 = (uint64_t) (x84 >> 0x2e);
+ uint64_t x86 = ((uint64_t)x84 & 0x3fffffffffff);
+ uint64_t x87 = (x56 + (0x1e1 * x85));
+ uint64_t x88 = (x87 >> 0x2f);
+ uint64_t x89 = (x87 & 0x7fffffffffff);
+ uint64_t x90 = (x88 + x59);
+ uint64_t x91 = (x90 >> 0x2e);
+ uint64_t x92 = (x90 & 0x3fffffffffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesquare.c b/src/Specific/solinas64_2e511m481_11limbs/fesquare.c
new file mode 100644
index 000000000..07640ea1d
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint64_t out[11], const uint64_t in1[11]) {
+ { const uint64_t x19 = in1[10];
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x21 = (((uint128_t)x2 * x19) + ((0x2 * ((uint128_t)x4 * x20)) + (((uint128_t)x6 * x18) + ((0x2 * ((uint128_t)x8 * x16)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + ((0x2 * ((uint128_t)x16 * x8)) + (((uint128_t)x18 * x6) + ((0x2 * ((uint128_t)x20 * x4)) + ((uint128_t)x19 * x2)))))))))));
+ { uint128_t x22 = ((((uint128_t)x2 * x20) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x20 * x2)))))))))) + (0x1e1 * ((uint128_t)x19 * x19)));
+ { uint128_t x23 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x1e1 * ((0x2 * ((uint128_t)x20 * x19)) + (0x2 * ((uint128_t)x19 * x20)))));
+ { uint128_t x24 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x1e1 * (((uint128_t)x18 * x19) + ((0x2 * ((uint128_t)x20 * x20)) + ((uint128_t)x19 * x18)))));
+ { uint128_t x25 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1e1 * ((0x2 * ((uint128_t)x16 * x19)) + ((0x2 * ((uint128_t)x18 * x20)) + ((0x2 * ((uint128_t)x20 * x18)) + (0x2 * ((uint128_t)x19 * x16)))))));
+ { uint128_t x26 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1e1 * (((uint128_t)x14 * x19) + ((0x2 * ((uint128_t)x16 * x20)) + (((uint128_t)x18 * x18) + ((0x2 * ((uint128_t)x20 * x16)) + ((uint128_t)x19 * x14)))))));
+ { uint128_t x27 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1e1 * ((0x2 * ((uint128_t)x12 * x19)) + ((0x2 * ((uint128_t)x14 * x20)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + ((0x2 * ((uint128_t)x20 * x14)) + (0x2 * ((uint128_t)x19 * x12)))))))));
+ { uint128_t x28 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1e1 * (((uint128_t)x10 * x19) + ((0x2 * ((uint128_t)x12 * x20)) + (((uint128_t)x14 * x18) + ((0x2 * ((uint128_t)x16 * x16)) + (((uint128_t)x18 * x14) + ((0x2 * ((uint128_t)x20 * x12)) + ((uint128_t)x19 * x10)))))))));
+ { uint128_t x29 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1e1 * ((0x2 * ((uint128_t)x8 * x19)) + ((0x2 * ((uint128_t)x10 * x20)) + ((0x2 * ((uint128_t)x12 * x18)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + ((0x2 * ((uint128_t)x18 * x12)) + ((0x2 * ((uint128_t)x20 * x10)) + (0x2 * ((uint128_t)x19 * x8)))))))))));
+ { uint128_t x30 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1e1 * (((uint128_t)x6 * x19) + ((0x2 * ((uint128_t)x8 * x20)) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (((uint128_t)x18 * x10) + ((0x2 * ((uint128_t)x20 * x8)) + ((uint128_t)x19 * x6)))))))))));
+ { uint128_t x31 = (((uint128_t)x2 * x2) + (0x1e1 * ((0x2 * ((uint128_t)x4 * x19)) + ((0x2 * ((uint128_t)x6 * x20)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + ((0x2 * ((uint128_t)x20 * x6)) + (0x2 * ((uint128_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ { uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ { uint128_t x34 = (x32 + x30);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x2e);
+ { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
+ { uint128_t x37 = (x35 + x29);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x2f);
+ { uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffff);
+ { uint128_t x40 = (x38 + x28);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x2e);
+ { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
+ { uint128_t x43 = (x41 + x27);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x2f);
+ { uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffff);
+ { uint128_t x46 = (x44 + x26);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x2e);
+ { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffff);
+ { uint128_t x49 = (x47 + x25);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x2f);
+ { uint64_t x51 = ((uint64_t)x49 & 0x7fffffffffff);
+ { uint128_t x52 = (x50 + x24);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x2e);
+ { uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffff);
+ { uint128_t x55 = (x53 + x23);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x2f);
+ { uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffff);
+ { uint128_t x58 = (x56 + x22);
+ { uint64_t x59 = (uint64_t) (x58 >> 0x2e);
+ { uint64_t x60 = ((uint64_t)x58 & 0x3fffffffffff);
+ { uint128_t x61 = (x59 + x21);
+ { uint64_t x62 = (uint64_t) (x61 >> 0x2e);
+ { uint64_t x63 = ((uint64_t)x61 & 0x3fffffffffff);
+ { uint64_t x64 = (x33 + (0x1e1 * x62));
+ { uint64_t x65 = (x64 >> 0x2f);
+ { uint64_t x66 = (x64 & 0x7fffffffffff);
+ { uint64_t x67 = (x65 + x36);
+ { uint64_t x68 = (x67 >> 0x2e);
+ { uint64_t x69 = (x67 & 0x3fffffffffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.log b/src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..d8d8138cd
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x21 = (((uint128_t)x2 * x19) + ((0x2 * ((uint128_t)x4 * x20)) + (((uint128_t)x6 * x18) + ((0x2 * ((uint128_t)x8 * x16)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + ((0x2 * ((uint128_t)x16 * x8)) + (((uint128_t)x18 * x6) + ((0x2 * ((uint128_t)x20 * x4)) + ((uint128_t)x19 * x2)))))))))));
+ uint128_t x22 = ((((uint128_t)x2 * x20) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x20 * x2)))))))))) + (0x1e1 * ((uint128_t)x19 * x19)));
+ uint128_t x23 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x1e1 * ((0x2 * ((uint128_t)x20 * x19)) + (0x2 * ((uint128_t)x19 * x20)))));
+ uint128_t x24 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x1e1 * (((uint128_t)x18 * x19) + ((0x2 * ((uint128_t)x20 * x20)) + ((uint128_t)x19 * x18)))));
+ uint128_t x25 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1e1 * ((0x2 * ((uint128_t)x16 * x19)) + ((0x2 * ((uint128_t)x18 * x20)) + ((0x2 * ((uint128_t)x20 * x18)) + (0x2 * ((uint128_t)x19 * x16)))))));
+ uint128_t x26 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1e1 * (((uint128_t)x14 * x19) + ((0x2 * ((uint128_t)x16 * x20)) + (((uint128_t)x18 * x18) + ((0x2 * ((uint128_t)x20 * x16)) + ((uint128_t)x19 * x14)))))));
+ uint128_t x27 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1e1 * ((0x2 * ((uint128_t)x12 * x19)) + ((0x2 * ((uint128_t)x14 * x20)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + ((0x2 * ((uint128_t)x20 * x14)) + (0x2 * ((uint128_t)x19 * x12)))))))));
+ uint128_t x28 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1e1 * (((uint128_t)x10 * x19) + ((0x2 * ((uint128_t)x12 * x20)) + (((uint128_t)x14 * x18) + ((0x2 * ((uint128_t)x16 * x16)) + (((uint128_t)x18 * x14) + ((0x2 * ((uint128_t)x20 * x12)) + ((uint128_t)x19 * x10)))))))));
+ uint128_t x29 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1e1 * ((0x2 * ((uint128_t)x8 * x19)) + ((0x2 * ((uint128_t)x10 * x20)) + ((0x2 * ((uint128_t)x12 * x18)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + ((0x2 * ((uint128_t)x18 * x12)) + ((0x2 * ((uint128_t)x20 * x10)) + (0x2 * ((uint128_t)x19 * x8)))))))))));
+ uint128_t x30 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1e1 * (((uint128_t)x6 * x19) + ((0x2 * ((uint128_t)x8 * x20)) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (((uint128_t)x18 * x10) + ((0x2 * ((uint128_t)x20 * x8)) + ((uint128_t)x19 * x6)))))))))));
+ uint128_t x31 = (((uint128_t)x2 * x2) + (0x1e1 * ((0x2 * ((uint128_t)x4 * x19)) + ((0x2 * ((uint128_t)x6 * x20)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + ((0x2 * ((uint128_t)x20 * x6)) + (0x2 * ((uint128_t)x19 * x4)))))))))))));
+ uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ uint128_t x34 = (x32 + x30);
+ uint64_t x35 = (uint64_t) (x34 >> 0x2e);
+ uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
+ uint128_t x37 = (x35 + x29);
+ uint64_t x38 = (uint64_t) (x37 >> 0x2f);
+ uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffff);
+ uint128_t x40 = (x38 + x28);
+ uint64_t x41 = (uint64_t) (x40 >> 0x2e);
+ uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
+ uint128_t x43 = (x41 + x27);
+ uint64_t x44 = (uint64_t) (x43 >> 0x2f);
+ uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffff);
+ uint128_t x46 = (x44 + x26);
+ uint64_t x47 = (uint64_t) (x46 >> 0x2e);
+ uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffff);
+ uint128_t x49 = (x47 + x25);
+ uint64_t x50 = (uint64_t) (x49 >> 0x2f);
+ uint64_t x51 = ((uint64_t)x49 & 0x7fffffffffff);
+ uint128_t x52 = (x50 + x24);
+ uint64_t x53 = (uint64_t) (x52 >> 0x2e);
+ uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffff);
+ uint128_t x55 = (x53 + x23);
+ uint64_t x56 = (uint64_t) (x55 >> 0x2f);
+ uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffff);
+ uint128_t x58 = (x56 + x22);
+ uint64_t x59 = (uint64_t) (x58 >> 0x2e);
+ uint64_t x60 = ((uint64_t)x58 & 0x3fffffffffff);
+ uint128_t x61 = (x59 + x21);
+ uint64_t x62 = (uint64_t) (x61 >> 0x2e);
+ uint64_t x63 = ((uint64_t)x61 & 0x3fffffffffff);
+ uint64_t x64 = (x33 + (0x1e1 * x62));
+ uint64_t x65 = (x64 >> 0x2f);
+ uint64_t x66 = (x64 & 0x7fffffffffff);
+ uint64_t x67 = (x65 + x36);
+ uint64_t x68 = (x67 >> 0x2e);
+ uint64_t x69 = (x67 & 0x3fffffffffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesub.c b/src/Specific/solinas64_2e511m481_11limbs/fesub.c
new file mode 100644
index 000000000..d6ceb463c
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ out[0] = ((Const 281474976709694 + x5) - x25);
+ out[1] = ((0x7ffffffffffe + x7) - x27);
+ out[2] = ((0xfffffffffffe + x9) - x29);
+ out[3] = ((0x7ffffffffffe + x11) - x31);
+ out[4] = ((0xfffffffffffe + x13) - x33);
+ out[5] = ((0x7ffffffffffe + x15) - x35);
+ out[6] = ((0xfffffffffffe + x17) - x37);
+ out[7] = ((0x7ffffffffffe + x19) - x39);
+ out[8] = ((0xfffffffffffe + x21) - x41);
+ out[9] = ((0x7ffffffffffe + x23) - x43);
+ out[10] = ((0x7ffffffffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.log b/src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..787360644
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0x7ffffffffffe + x22) - x42), ((0x7ffffffffffe + x23) - x43), ((0xfffffffffffe + x21) - x41), ((0x7ffffffffffe + x19) - x39), ((0xfffffffffffe + x17) - x37), ((0x7ffffffffffe + x15) - x35), ((0xfffffffffffe + x13) - x33), ((0x7ffffffffffe + x11) - x31), ((0xfffffffffffe + x9) - x29), ((0x7ffffffffffe + x7) - x27), ((Const 281474976709694 + x5) - x25)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481_11limbs/freeze.c b/src/Specific/solinas64_2e511m481_11limbs/freeze.c
new file mode 100644
index 000000000..f19f18794
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint64_t out[11], const uint64_t in1[11]) {
+ { const uint64_t x19 = in1[10];
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488354847);
+ { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x4, 0x3fffffffffff);
+ { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffffffffff);
+ { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x8, 0x3fffffffffff);
+ { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffffffffff);
+ { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x12, 0x3fffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffffffffff);
+ { uint64_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x16, 0x3fffffffffff);
+ { uint64_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffffffffff);
+ { uint64_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x20, 0x3fffffffffff);
+ { uint64_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffffffffff);
+ { uint64_t x54 = cmovznz64(x53, 0x0, 0xffffffffffffffffL);
+ { uint64_t x55 = (x54 & Const 140737488354847);
+ { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint64_t x59 = (x54 & 0x3fffffffffff);
+ { uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint64_t x63 = (x54 & 0x7fffffffffff);
+ { uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint64_t x67 = (x54 & 0x3fffffffffff);
+ { uint64_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint64_t x71 = (x54 & 0x7fffffffffff);
+ { uint64_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint64_t x75 = (x54 & 0x3fffffffffff);
+ { uint64_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint64_t x79 = (x54 & 0x7fffffffffff);
+ { uint64_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint64_t x83 = (x54 & 0x3fffffffffff);
+ { uint64_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint64_t x87 = (x54 & 0x7fffffffffff);
+ { uint64_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint64_t x91 = (x54 & 0x3fffffffffff);
+ { uint64_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint64_t x95 = (x54 & 0x3fffffffffff);
+ { uint64_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.log b/src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..eb058f921
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488354847);
+ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x4, 0x3fffffffffff);
+ uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffffffffff);
+ uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x8, 0x3fffffffffff);
+ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffffffffff);
+ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x12, 0x3fffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffffffffff);
+ uint64_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x16, 0x3fffffffffff);
+ uint64_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffffffffff);
+ uint64_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x20, 0x3fffffffffff);
+ uint64_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffffffffff);
+ uint64_t x54 = cmovznz64(x53, 0x0, 0xffffffffffffffffL);
+ uint64_t x55 = (x54 & Const 140737488354847);
+ uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint64_t x59 = (x54 & 0x3fffffffffff);
+ uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint64_t x63 = (x54 & 0x7fffffffffff);
+ uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint64_t x67 = (x54 & 0x3fffffffffff);
+ uint64_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint64_t x71 = (x54 & 0x7fffffffffff);
+ uint64_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint64_t x75 = (x54 & 0x3fffffffffff);
+ uint64_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint64_t x79 = (x54 & 0x7fffffffffff);
+ uint64_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint64_t x83 = (x54 & 0x3fffffffffff);
+ uint64_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint64_t x87 = (x54 & 0x7fffffffffff);
+ uint64_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint64_t x91 = (x54 & 0x3fffffffffff);
+ uint64_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint64_t x95 = (x54 & 0x3fffffffffff);
+ uint64_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569_11limbs/feadd.c b/src/Specific/solinas64_2e512m569_11limbs/feadd.c
new file mode 100644
index 000000000..f810d17db
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/feadd.c
@@ -0,0 +1,36 @@
+static void feadd(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ out[0] = (x5 + x25);
+ out[1] = (x7 + x27);
+ out[2] = (x9 + x29);
+ out[3] = (x11 + x31);
+ out[4] = (x13 + x33);
+ out[5] = (x15 + x35);
+ out[6] = (x17 + x37);
+ out[7] = (x19 + x39);
+ out[8] = (x21 + x41);
+ out[9] = (x23 + x43);
+ out[10] = (x22 + x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.log b/src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.log
new file mode 100644
index 000000000..83efadb9e
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569_11limbs/femul.c b/src/Specific/solinas64_2e512m569_11limbs/femul.c
new file mode 100644
index 000000000..90798c593
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/femul.c
@@ -0,0 +1,85 @@
+static void femul(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ { uint128_t x44 = (((uint128_t)x5 * x42) + (((uint128_t)x7 * x43) + ((0x2 * ((uint128_t)x9 * x41)) + (((uint128_t)x11 * x39) + ((0x2 * ((uint128_t)x13 * x37)) + (((uint128_t)x15 * x35) + ((0x2 * ((uint128_t)x17 * x33)) + (((uint128_t)x19 * x31) + ((0x2 * ((uint128_t)x21 * x29)) + (((uint128_t)x23 * x27) + ((uint128_t)x22 * x25)))))))))));
+ { uint128_t x45 = ((((uint128_t)x5 * x43) + ((0x2 * ((uint128_t)x7 * x41)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + ((uint128_t)x23 * x25)))))))))) + (0x239 * (0x2 * ((uint128_t)x22 * x42))));
+ { uint128_t x46 = ((((uint128_t)x5 * x41) + (((uint128_t)x7 * x39) + ((0x2 * ((uint128_t)x9 * x37)) + (((uint128_t)x11 * x35) + ((0x2 * ((uint128_t)x13 * x33)) + (((uint128_t)x15 * x31) + ((0x2 * ((uint128_t)x17 * x29)) + (((uint128_t)x19 * x27) + ((uint128_t)x21 * x25))))))))) + (0x239 * (((uint128_t)x23 * x42) + ((uint128_t)x22 * x43))));
+ { uint128_t x47 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((uint128_t)x19 * x25)))))))) + (0x239 * ((0x2 * ((uint128_t)x21 * x42)) + (((uint128_t)x23 * x43) + (0x2 * ((uint128_t)x22 * x41))))));
+ { uint128_t x48 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + ((0x2 * ((uint128_t)x9 * x33)) + (((uint128_t)x11 * x31) + ((0x2 * ((uint128_t)x13 * x29)) + (((uint128_t)x15 * x27) + ((uint128_t)x17 * x25))))))) + (0x239 * (((uint128_t)x19 * x42) + (((uint128_t)x21 * x43) + (((uint128_t)x23 * x41) + ((uint128_t)x22 * x39))))));
+ { uint128_t x49 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((uint128_t)x15 * x25)))))) + (0x239 * ((0x2 * ((uint128_t)x17 * x42)) + (((uint128_t)x19 * x43) + ((0x2 * ((uint128_t)x21 * x41)) + (((uint128_t)x23 * x39) + (0x2 * ((uint128_t)x22 * x37))))))));
+ { uint128_t x50 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + ((0x2 * ((uint128_t)x9 * x29)) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25))))) + (0x239 * (((uint128_t)x15 * x42) + (((uint128_t)x17 * x43) + (((uint128_t)x19 * x41) + (((uint128_t)x21 * x39) + (((uint128_t)x23 * x37) + ((uint128_t)x22 * x35))))))));
+ { uint128_t x51 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((uint128_t)x11 * x25)))) + (0x239 * ((0x2 * ((uint128_t)x13 * x42)) + (((uint128_t)x15 * x43) + ((0x2 * ((uint128_t)x17 * x41)) + (((uint128_t)x19 * x39) + ((0x2 * ((uint128_t)x21 * x37)) + (((uint128_t)x23 * x35) + (0x2 * ((uint128_t)x22 * x33))))))))));
+ { uint128_t x52 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + ((uint128_t)x9 * x25))) + (0x239 * (((uint128_t)x11 * x42) + (((uint128_t)x13 * x43) + (((uint128_t)x15 * x41) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + (((uint128_t)x23 * x33) + ((uint128_t)x22 * x31))))))))));
+ { uint128_t x53 = ((((uint128_t)x5 * x27) + ((uint128_t)x7 * x25)) + (0x239 * ((0x2 * ((uint128_t)x9 * x42)) + (((uint128_t)x11 * x43) + ((0x2 * ((uint128_t)x13 * x41)) + (((uint128_t)x15 * x39) + ((0x2 * ((uint128_t)x17 * x37)) + (((uint128_t)x19 * x35) + ((0x2 * ((uint128_t)x21 * x33)) + (((uint128_t)x23 * x31) + (0x2 * ((uint128_t)x22 * x29))))))))))));
+ { uint128_t x54 = (((uint128_t)x5 * x25) + (0x239 * ((0x2 * ((uint128_t)x7 * x42)) + ((0x2 * ((uint128_t)x9 * x43)) + ((0x2 * ((uint128_t)x11 * x41)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + ((0x2 * ((uint128_t)x23 * x29)) + (0x2 * ((uint128_t)x22 * x27)))))))))))));
+ { uint64_t x55 = (uint64_t) (x54 >> 0x2f);
+ { uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffff);
+ { uint128_t x57 = (x55 + x53);
+ { uint64_t x58 = (uint64_t) (x57 >> 0x2f);
+ { uint64_t x59 = ((uint64_t)x57 & 0x7fffffffffff);
+ { uint128_t x60 = (x58 + x52);
+ { uint64_t x61 = (uint64_t) (x60 >> 0x2e);
+ { uint64_t x62 = ((uint64_t)x60 & 0x3fffffffffff);
+ { uint128_t x63 = (x61 + x51);
+ { uint64_t x64 = (uint64_t) (x63 >> 0x2f);
+ { uint64_t x65 = ((uint64_t)x63 & 0x7fffffffffff);
+ { uint128_t x66 = (x64 + x50);
+ { uint64_t x67 = (uint64_t) (x66 >> 0x2e);
+ { uint64_t x68 = ((uint64_t)x66 & 0x3fffffffffff);
+ { uint128_t x69 = (x67 + x49);
+ { uint64_t x70 = (uint64_t) (x69 >> 0x2f);
+ { uint64_t x71 = ((uint64_t)x69 & 0x7fffffffffff);
+ { uint128_t x72 = (x70 + x48);
+ { uint64_t x73 = (uint64_t) (x72 >> 0x2e);
+ { uint64_t x74 = ((uint64_t)x72 & 0x3fffffffffff);
+ { uint128_t x75 = (x73 + x47);
+ { uint64_t x76 = (uint64_t) (x75 >> 0x2f);
+ { uint64_t x77 = ((uint64_t)x75 & 0x7fffffffffff);
+ { uint128_t x78 = (x76 + x46);
+ { uint64_t x79 = (uint64_t) (x78 >> 0x2e);
+ { uint64_t x80 = ((uint64_t)x78 & 0x3fffffffffff);
+ { uint128_t x81 = (x79 + x45);
+ { uint64_t x82 = (uint64_t) (x81 >> 0x2f);
+ { uint64_t x83 = ((uint64_t)x81 & 0x7fffffffffff);
+ { uint128_t x84 = (x82 + x44);
+ { uint64_t x85 = (uint64_t) (x84 >> 0x2e);
+ { uint64_t x86 = ((uint64_t)x84 & 0x3fffffffffff);
+ { uint64_t x87 = (x56 + (0x239 * x85));
+ { uint64_t x88 = (x87 >> 0x2f);
+ { uint64_t x89 = (x87 & 0x7fffffffffff);
+ { uint64_t x90 = (x88 + x59);
+ { uint64_t x91 = (x90 >> 0x2f);
+ { uint64_t x92 = (x90 & 0x7fffffffffff);
+ out[0] = x89;
+ out[1] = x92;
+ out[2] = (x91 + x62);
+ out[3] = x65;
+ out[4] = x68;
+ out[5] = x71;
+ out[6] = x74;
+ out[7] = x77;
+ out[8] = x80;
+ out[9] = x83;
+ out[10] = x86;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e512m569_11limbs/femulDisplay.log b/src/Specific/solinas64_2e512m569_11limbs/femulDisplay.log
new file mode 100644
index 000000000..c242e9333
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/femulDisplay.log
@@ -0,0 +1,56 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ uint128_t x44 = (((uint128_t)x5 * x42) + (((uint128_t)x7 * x43) + ((0x2 * ((uint128_t)x9 * x41)) + (((uint128_t)x11 * x39) + ((0x2 * ((uint128_t)x13 * x37)) + (((uint128_t)x15 * x35) + ((0x2 * ((uint128_t)x17 * x33)) + (((uint128_t)x19 * x31) + ((0x2 * ((uint128_t)x21 * x29)) + (((uint128_t)x23 * x27) + ((uint128_t)x22 * x25)))))))))));
+ uint128_t x45 = ((((uint128_t)x5 * x43) + ((0x2 * ((uint128_t)x7 * x41)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + ((uint128_t)x23 * x25)))))))))) + (0x239 * (0x2 * ((uint128_t)x22 * x42))));
+ uint128_t x46 = ((((uint128_t)x5 * x41) + (((uint128_t)x7 * x39) + ((0x2 * ((uint128_t)x9 * x37)) + (((uint128_t)x11 * x35) + ((0x2 * ((uint128_t)x13 * x33)) + (((uint128_t)x15 * x31) + ((0x2 * ((uint128_t)x17 * x29)) + (((uint128_t)x19 * x27) + ((uint128_t)x21 * x25))))))))) + (0x239 * (((uint128_t)x23 * x42) + ((uint128_t)x22 * x43))));
+ uint128_t x47 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((uint128_t)x19 * x25)))))))) + (0x239 * ((0x2 * ((uint128_t)x21 * x42)) + (((uint128_t)x23 * x43) + (0x2 * ((uint128_t)x22 * x41))))));
+ uint128_t x48 = ((((uint128_t)x5 * x37) + (((uint128_t)x7 * x35) + ((0x2 * ((uint128_t)x9 * x33)) + (((uint128_t)x11 * x31) + ((0x2 * ((uint128_t)x13 * x29)) + (((uint128_t)x15 * x27) + ((uint128_t)x17 * x25))))))) + (0x239 * (((uint128_t)x19 * x42) + (((uint128_t)x21 * x43) + (((uint128_t)x23 * x41) + ((uint128_t)x22 * x39))))));
+ uint128_t x49 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((uint128_t)x15 * x25)))))) + (0x239 * ((0x2 * ((uint128_t)x17 * x42)) + (((uint128_t)x19 * x43) + ((0x2 * ((uint128_t)x21 * x41)) + (((uint128_t)x23 * x39) + (0x2 * ((uint128_t)x22 * x37))))))));
+ uint128_t x50 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + ((0x2 * ((uint128_t)x9 * x29)) + (((uint128_t)x11 * x27) + ((uint128_t)x13 * x25))))) + (0x239 * (((uint128_t)x15 * x42) + (((uint128_t)x17 * x43) + (((uint128_t)x19 * x41) + (((uint128_t)x21 * x39) + (((uint128_t)x23 * x37) + ((uint128_t)x22 * x35))))))));
+ uint128_t x51 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((uint128_t)x11 * x25)))) + (0x239 * ((0x2 * ((uint128_t)x13 * x42)) + (((uint128_t)x15 * x43) + ((0x2 * ((uint128_t)x17 * x41)) + (((uint128_t)x19 * x39) + ((0x2 * ((uint128_t)x21 * x37)) + (((uint128_t)x23 * x35) + (0x2 * ((uint128_t)x22 * x33))))))))));
+ uint128_t x52 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + ((uint128_t)x9 * x25))) + (0x239 * (((uint128_t)x11 * x42) + (((uint128_t)x13 * x43) + (((uint128_t)x15 * x41) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + (((uint128_t)x23 * x33) + ((uint128_t)x22 * x31))))))))));
+ uint128_t x53 = ((((uint128_t)x5 * x27) + ((uint128_t)x7 * x25)) + (0x239 * ((0x2 * ((uint128_t)x9 * x42)) + (((uint128_t)x11 * x43) + ((0x2 * ((uint128_t)x13 * x41)) + (((uint128_t)x15 * x39) + ((0x2 * ((uint128_t)x17 * x37)) + (((uint128_t)x19 * x35) + ((0x2 * ((uint128_t)x21 * x33)) + (((uint128_t)x23 * x31) + (0x2 * ((uint128_t)x22 * x29))))))))))));
+ uint128_t x54 = (((uint128_t)x5 * x25) + (0x239 * ((0x2 * ((uint128_t)x7 * x42)) + ((0x2 * ((uint128_t)x9 * x43)) + ((0x2 * ((uint128_t)x11 * x41)) + ((0x2 * ((uint128_t)x13 * x39)) + ((0x2 * ((uint128_t)x15 * x37)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + ((0x2 * ((uint128_t)x21 * x31)) + ((0x2 * ((uint128_t)x23 * x29)) + (0x2 * ((uint128_t)x22 * x27)))))))))))));
+ uint64_t x55 = (uint64_t) (x54 >> 0x2f);
+ uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffff);
+ uint128_t x57 = (x55 + x53);
+ uint64_t x58 = (uint64_t) (x57 >> 0x2f);
+ uint64_t x59 = ((uint64_t)x57 & 0x7fffffffffff);
+ uint128_t x60 = (x58 + x52);
+ uint64_t x61 = (uint64_t) (x60 >> 0x2e);
+ uint64_t x62 = ((uint64_t)x60 & 0x3fffffffffff);
+ uint128_t x63 = (x61 + x51);
+ uint64_t x64 = (uint64_t) (x63 >> 0x2f);
+ uint64_t x65 = ((uint64_t)x63 & 0x7fffffffffff);
+ uint128_t x66 = (x64 + x50);
+ uint64_t x67 = (uint64_t) (x66 >> 0x2e);
+ uint64_t x68 = ((uint64_t)x66 & 0x3fffffffffff);
+ uint128_t x69 = (x67 + x49);
+ uint64_t x70 = (uint64_t) (x69 >> 0x2f);
+ uint64_t x71 = ((uint64_t)x69 & 0x7fffffffffff);
+ uint128_t x72 = (x70 + x48);
+ uint64_t x73 = (uint64_t) (x72 >> 0x2e);
+ uint64_t x74 = ((uint64_t)x72 & 0x3fffffffffff);
+ uint128_t x75 = (x73 + x47);
+ uint64_t x76 = (uint64_t) (x75 >> 0x2f);
+ uint64_t x77 = ((uint64_t)x75 & 0x7fffffffffff);
+ uint128_t x78 = (x76 + x46);
+ uint64_t x79 = (uint64_t) (x78 >> 0x2e);
+ uint64_t x80 = ((uint64_t)x78 & 0x3fffffffffff);
+ uint128_t x81 = (x79 + x45);
+ uint64_t x82 = (uint64_t) (x81 >> 0x2f);
+ uint64_t x83 = ((uint64_t)x81 & 0x7fffffffffff);
+ uint128_t x84 = (x82 + x44);
+ uint64_t x85 = (uint64_t) (x84 >> 0x2e);
+ uint64_t x86 = ((uint64_t)x84 & 0x3fffffffffff);
+ uint64_t x87 = (x56 + (0x239 * x85));
+ uint64_t x88 = (x87 >> 0x2f);
+ uint64_t x89 = (x87 & 0x7fffffffffff);
+ uint64_t x90 = (x88 + x59);
+ uint64_t x91 = (x90 >> 0x2f);
+ uint64_t x92 = (x90 & 0x7fffffffffff);
+ return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesquare.c b/src/Specific/solinas64_2e512m569_11limbs/fesquare.c
new file mode 100644
index 000000000..ae80642eb
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesquare.c
@@ -0,0 +1,74 @@
+static void fesquare(uint64_t out[11], const uint64_t in1[11]) {
+ { const uint64_t x19 = in1[10];
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x21 = (((uint128_t)x2 * x19) + (((uint128_t)x4 * x20) + ((0x2 * ((uint128_t)x6 * x18)) + (((uint128_t)x8 * x16) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + (((uint128_t)x16 * x8) + ((0x2 * ((uint128_t)x18 * x6)) + (((uint128_t)x20 * x4) + ((uint128_t)x19 * x2)))))))))));
+ { uint128_t x22 = ((((uint128_t)x2 * x20) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x20 * x2)))))))))) + (0x239 * (0x2 * ((uint128_t)x19 * x19))));
+ { uint128_t x23 = ((((uint128_t)x2 * x18) + (((uint128_t)x4 * x16) + ((0x2 * ((uint128_t)x6 * x14)) + (((uint128_t)x8 * x12) + ((0x2 * ((uint128_t)x10 * x10)) + (((uint128_t)x12 * x8) + ((0x2 * ((uint128_t)x14 * x6)) + (((uint128_t)x16 * x4) + ((uint128_t)x18 * x2))))))))) + (0x239 * (((uint128_t)x20 * x19) + ((uint128_t)x19 * x20))));
+ { uint128_t x24 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x239 * ((0x2 * ((uint128_t)x18 * x19)) + (((uint128_t)x20 * x20) + (0x2 * ((uint128_t)x19 * x18))))));
+ { uint128_t x25 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x239 * (((uint128_t)x16 * x19) + (((uint128_t)x18 * x20) + (((uint128_t)x20 * x18) + ((uint128_t)x19 * x16))))));
+ { uint128_t x26 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x239 * ((0x2 * ((uint128_t)x14 * x19)) + (((uint128_t)x16 * x20) + ((0x2 * ((uint128_t)x18 * x18)) + (((uint128_t)x20 * x16) + (0x2 * ((uint128_t)x19 * x14))))))));
+ { uint128_t x27 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x239 * (((uint128_t)x12 * x19) + (((uint128_t)x14 * x20) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + (((uint128_t)x20 * x14) + ((uint128_t)x19 * x12))))))));
+ { uint128_t x28 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x239 * ((0x2 * ((uint128_t)x10 * x19)) + (((uint128_t)x12 * x20) + ((0x2 * ((uint128_t)x14 * x18)) + (((uint128_t)x16 * x16) + ((0x2 * ((uint128_t)x18 * x14)) + (((uint128_t)x20 * x12) + (0x2 * ((uint128_t)x19 * x10))))))))));
+ { uint128_t x29 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x239 * (((uint128_t)x8 * x19) + (((uint128_t)x10 * x20) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + (((uint128_t)x20 * x10) + ((uint128_t)x19 * x8))))))))));
+ { uint128_t x30 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x239 * ((0x2 * ((uint128_t)x6 * x19)) + (((uint128_t)x8 * x20) + ((0x2 * ((uint128_t)x10 * x18)) + (((uint128_t)x12 * x16) + ((0x2 * ((uint128_t)x14 * x14)) + (((uint128_t)x16 * x12) + ((0x2 * ((uint128_t)x18 * x10)) + (((uint128_t)x20 * x8) + (0x2 * ((uint128_t)x19 * x6))))))))))));
+ { uint128_t x31 = (((uint128_t)x2 * x2) + (0x239 * ((0x2 * ((uint128_t)x4 * x19)) + ((0x2 * ((uint128_t)x6 * x20)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + ((0x2 * ((uint128_t)x20 * x6)) + (0x2 * ((uint128_t)x19 * x4)))))))))))));
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ { uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ { uint128_t x34 = (x32 + x30);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x2f);
+ { uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffff);
+ { uint128_t x37 = (x35 + x29);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x2e);
+ { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffff);
+ { uint128_t x40 = (x38 + x28);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x2f);
+ { uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffff);
+ { uint128_t x43 = (x41 + x27);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x2e);
+ { uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffff);
+ { uint128_t x46 = (x44 + x26);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x2f);
+ { uint64_t x48 = ((uint64_t)x46 & 0x7fffffffffff);
+ { uint128_t x49 = (x47 + x25);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x2e);
+ { uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffff);
+ { uint128_t x52 = (x50 + x24);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x2f);
+ { uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffff);
+ { uint128_t x55 = (x53 + x23);
+ { uint64_t x56 = (uint64_t) (x55 >> 0x2e);
+ { uint64_t x57 = ((uint64_t)x55 & 0x3fffffffffff);
+ { uint128_t x58 = (x56 + x22);
+ { uint64_t x59 = (uint64_t) (x58 >> 0x2f);
+ { uint64_t x60 = ((uint64_t)x58 & 0x7fffffffffff);
+ { uint128_t x61 = (x59 + x21);
+ { uint64_t x62 = (uint64_t) (x61 >> 0x2e);
+ { uint64_t x63 = ((uint64_t)x61 & 0x3fffffffffff);
+ { uint64_t x64 = (x33 + (0x239 * x62));
+ { uint64_t x65 = (x64 >> 0x2f);
+ { uint64_t x66 = (x64 & 0x7fffffffffff);
+ { uint64_t x67 = (x65 + x36);
+ { uint64_t x68 = (x67 >> 0x2f);
+ { uint64_t x69 = (x67 & 0x7fffffffffff);
+ out[0] = x66;
+ out[1] = x69;
+ out[2] = (x68 + x39);
+ out[3] = x42;
+ out[4] = x45;
+ out[5] = x48;
+ out[6] = x51;
+ out[7] = x54;
+ out[8] = x57;
+ out[9] = x60;
+ out[10] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.log b/src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.log
new file mode 100644
index 000000000..9d40224db
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.log
@@ -0,0 +1,56 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x21 = (((uint128_t)x2 * x19) + (((uint128_t)x4 * x20) + ((0x2 * ((uint128_t)x6 * x18)) + (((uint128_t)x8 * x16) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + (((uint128_t)x16 * x8) + ((0x2 * ((uint128_t)x18 * x6)) + (((uint128_t)x20 * x4) + ((uint128_t)x19 * x2)))))))))));
+ uint128_t x22 = ((((uint128_t)x2 * x20) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x20 * x2)))))))))) + (0x239 * (0x2 * ((uint128_t)x19 * x19))));
+ uint128_t x23 = ((((uint128_t)x2 * x18) + (((uint128_t)x4 * x16) + ((0x2 * ((uint128_t)x6 * x14)) + (((uint128_t)x8 * x12) + ((0x2 * ((uint128_t)x10 * x10)) + (((uint128_t)x12 * x8) + ((0x2 * ((uint128_t)x14 * x6)) + (((uint128_t)x16 * x4) + ((uint128_t)x18 * x2))))))))) + (0x239 * (((uint128_t)x20 * x19) + ((uint128_t)x19 * x20))));
+ uint128_t x24 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x239 * ((0x2 * ((uint128_t)x18 * x19)) + (((uint128_t)x20 * x20) + (0x2 * ((uint128_t)x19 * x18))))));
+ uint128_t x25 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x239 * (((uint128_t)x16 * x19) + (((uint128_t)x18 * x20) + (((uint128_t)x20 * x18) + ((uint128_t)x19 * x16))))));
+ uint128_t x26 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x239 * ((0x2 * ((uint128_t)x14 * x19)) + (((uint128_t)x16 * x20) + ((0x2 * ((uint128_t)x18 * x18)) + (((uint128_t)x20 * x16) + (0x2 * ((uint128_t)x19 * x14))))))));
+ uint128_t x27 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x239 * (((uint128_t)x12 * x19) + (((uint128_t)x14 * x20) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + (((uint128_t)x20 * x14) + ((uint128_t)x19 * x12))))))));
+ uint128_t x28 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x239 * ((0x2 * ((uint128_t)x10 * x19)) + (((uint128_t)x12 * x20) + ((0x2 * ((uint128_t)x14 * x18)) + (((uint128_t)x16 * x16) + ((0x2 * ((uint128_t)x18 * x14)) + (((uint128_t)x20 * x12) + (0x2 * ((uint128_t)x19 * x10))))))))));
+ uint128_t x29 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x239 * (((uint128_t)x8 * x19) + (((uint128_t)x10 * x20) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + (((uint128_t)x20 * x10) + ((uint128_t)x19 * x8))))))))));
+ uint128_t x30 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x239 * ((0x2 * ((uint128_t)x6 * x19)) + (((uint128_t)x8 * x20) + ((0x2 * ((uint128_t)x10 * x18)) + (((uint128_t)x12 * x16) + ((0x2 * ((uint128_t)x14 * x14)) + (((uint128_t)x16 * x12) + ((0x2 * ((uint128_t)x18 * x10)) + (((uint128_t)x20 * x8) + (0x2 * ((uint128_t)x19 * x6))))))))))));
+ uint128_t x31 = (((uint128_t)x2 * x2) + (0x239 * ((0x2 * ((uint128_t)x4 * x19)) + ((0x2 * ((uint128_t)x6 * x20)) + ((0x2 * ((uint128_t)x8 * x18)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + ((0x2 * ((uint128_t)x18 * x8)) + ((0x2 * ((uint128_t)x20 * x6)) + (0x2 * ((uint128_t)x19 * x4)))))))))))));
+ uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ uint128_t x34 = (x32 + x30);
+ uint64_t x35 = (uint64_t) (x34 >> 0x2f);
+ uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffff);
+ uint128_t x37 = (x35 + x29);
+ uint64_t x38 = (uint64_t) (x37 >> 0x2e);
+ uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffff);
+ uint128_t x40 = (x38 + x28);
+ uint64_t x41 = (uint64_t) (x40 >> 0x2f);
+ uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffff);
+ uint128_t x43 = (x41 + x27);
+ uint64_t x44 = (uint64_t) (x43 >> 0x2e);
+ uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffff);
+ uint128_t x46 = (x44 + x26);
+ uint64_t x47 = (uint64_t) (x46 >> 0x2f);
+ uint64_t x48 = ((uint64_t)x46 & 0x7fffffffffff);
+ uint128_t x49 = (x47 + x25);
+ uint64_t x50 = (uint64_t) (x49 >> 0x2e);
+ uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffff);
+ uint128_t x52 = (x50 + x24);
+ uint64_t x53 = (uint64_t) (x52 >> 0x2f);
+ uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffff);
+ uint128_t x55 = (x53 + x23);
+ uint64_t x56 = (uint64_t) (x55 >> 0x2e);
+ uint64_t x57 = ((uint64_t)x55 & 0x3fffffffffff);
+ uint128_t x58 = (x56 + x22);
+ uint64_t x59 = (uint64_t) (x58 >> 0x2f);
+ uint64_t x60 = ((uint64_t)x58 & 0x7fffffffffff);
+ uint128_t x61 = (x59 + x21);
+ uint64_t x62 = (uint64_t) (x61 >> 0x2e);
+ uint64_t x63 = ((uint64_t)x61 & 0x3fffffffffff);
+ uint64_t x64 = (x33 + (0x239 * x62));
+ uint64_t x65 = (x64 >> 0x2f);
+ uint64_t x66 = (x64 & 0x7fffffffffff);
+ uint64_t x67 = (x65 + x36);
+ uint64_t x68 = (x67 >> 0x2f);
+ uint64_t x69 = (x67 & 0x7fffffffffff);
+ return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesub.c b/src/Specific/solinas64_2e512m569_11limbs/fesub.c
new file mode 100644
index 000000000..e9802695a
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesub.c
@@ -0,0 +1,36 @@
+static void fesub(uint64_t out[11], const uint64_t in1[11], const uint64_t in2[11]) {
+ { const uint64_t x22 = in1[10];
+ { const uint64_t x23 = in1[9];
+ { const uint64_t x21 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x42 = in2[10];
+ { const uint64_t x43 = in2[9];
+ { const uint64_t x41 = in2[8];
+ { const uint64_t x39 = in2[7];
+ { const uint64_t x37 = in2[6];
+ { const uint64_t x35 = in2[5];
+ { const uint64_t x33 = in2[4];
+ { const uint64_t x31 = in2[3];
+ { const uint64_t x29 = in2[2];
+ { const uint64_t x27 = in2[1];
+ { const uint64_t x25 = in2[0];
+ out[0] = ((Const 281474976709518 + x5) - x25);
+ out[1] = ((0xfffffffffffe + x7) - x27);
+ out[2] = ((0x7ffffffffffe + x9) - x29);
+ out[3] = ((0xfffffffffffe + x11) - x31);
+ out[4] = ((0x7ffffffffffe + x13) - x33);
+ out[5] = ((0xfffffffffffe + x15) - x35);
+ out[6] = ((0x7ffffffffffe + x17) - x37);
+ out[7] = ((0xfffffffffffe + x19) - x39);
+ out[8] = ((0x7ffffffffffe + x21) - x41);
+ out[9] = ((0xfffffffffffe + x23) - x43);
+ out[10] = ((0x7ffffffffffe + x22) - x42);
+ }}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.log b/src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.log
new file mode 100644
index 000000000..8a21bad67
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
+ (((0x7ffffffffffe + x22) - x42), ((0xfffffffffffe + x23) - x43), ((0x7ffffffffffe + x21) - x41), ((0xfffffffffffe + x19) - x39), ((0x7ffffffffffe + x17) - x37), ((0xfffffffffffe + x15) - x35), ((0x7ffffffffffe + x13) - x33), ((0xfffffffffffe + x11) - x31), ((0x7ffffffffffe + x9) - x29), ((0xfffffffffffe + x7) - x27), ((Const 281474976709518 + x5) - x25)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569_11limbs/freeze.c b/src/Specific/solinas64_2e512m569_11limbs/freeze.c
new file mode 100644
index 000000000..d5152bc48
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/freeze.c
@@ -0,0 +1,59 @@
+static void freeze(uint64_t out[11], const uint64_t in1[11]) {
+ { const uint64_t x19 = in1[10];
+ { const uint64_t x20 = in1[9];
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488354759);
+ { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffffffffff);
+ { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x6, 0x3fffffffffff);
+ { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffffffffff);
+ { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x10, 0x3fffffffffff);
+ { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x14, 0x3fffffffffff);
+ { uint64_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffffffffff);
+ { uint64_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x18, 0x3fffffffffff);
+ { uint64_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffffffffff);
+ { uint64_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffffffffff);
+ { uint64_t x54 = cmovznz64(x53, 0x0, 0xffffffffffffffffL);
+ { uint64_t x55 = (x54 & Const 140737488354759);
+ { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ { uint64_t x59 = (x54 & 0x7fffffffffff);
+ { uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ { uint64_t x63 = (x54 & 0x3fffffffffff);
+ { uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ { uint64_t x67 = (x54 & 0x7fffffffffff);
+ { uint64_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ { uint64_t x71 = (x54 & 0x3fffffffffff);
+ { uint64_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ { uint64_t x75 = (x54 & 0x7fffffffffff);
+ { uint64_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ { uint64_t x79 = (x54 & 0x3fffffffffff);
+ { uint64_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ { uint64_t x83 = (x54 & 0x7fffffffffff);
+ { uint64_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ { uint64_t x87 = (x54 & 0x3fffffffffff);
+ { uint64_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ { uint64_t x91 = (x54 & 0x7fffffffffff);
+ { uint64_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ { uint64_t x95 = (x54 & 0x3fffffffffff);
+ { uint64_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ out[0] = x57;
+ out[1] = x61;
+ out[2] = x65;
+ out[3] = x69;
+ out[4] = x73;
+ out[5] = x77;
+ out[6] = x81;
+ out[7] = x85;
+ out[8] = x89;
+ out[9] = x93;
+ out[10] = x97;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.log b/src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.log
new file mode 100644
index 000000000..ab21ebb2e
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.log
@@ -0,0 +1,41 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488354759);
+ uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffffffffff);
+ uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x6, 0x3fffffffffff);
+ uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffffffffff);
+ uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x10, 0x3fffffffffff);
+ uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x14, 0x3fffffffffff);
+ uint64_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffffffffff);
+ uint64_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x18, 0x3fffffffffff);
+ uint64_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffffffffff);
+ uint64_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x19, 0x3fffffffffff);
+ uint64_t x54 = cmovznz64(x53, 0x0, 0xffffffffffffffffL);
+ uint64_t x55 = (x54 & Const 140737488354759);
+ uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
+ uint64_t x59 = (x54 & 0x7fffffffffff);
+ uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
+ uint64_t x63 = (x54 & 0x3fffffffffff);
+ uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
+ uint64_t x67 = (x54 & 0x7fffffffffff);
+ uint64_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
+ uint64_t x71 = (x54 & 0x3fffffffffff);
+ uint64_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
+ uint64_t x75 = (x54 & 0x7fffffffffff);
+ uint64_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
+ uint64_t x79 = (x54 & 0x3fffffffffff);
+ uint64_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
+ uint64_t x83 = (x54 & 0x7fffffffffff);
+ uint64_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
+ uint64_t x87 = (x54 & 0x3fffffffffff);
+ uint64_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
+ uint64_t x91 = (x54 & 0x7fffffffffff);
+ uint64_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
+ uint64_t x95 = (x54 & 0x3fffffffffff);
+ uint64_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
+ (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1_9limbs/feadd.c b/src/Specific/solinas64_2e521m1_9limbs/feadd.c
new file mode 100644
index 000000000..98ab4434c
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/feadd.c
@@ -0,0 +1,30 @@
+static void feadd(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ out[0] = (x5 + x21);
+ out[1] = (x7 + x23);
+ out[2] = (x9 + x25);
+ out[3] = (x11 + x27);
+ out[4] = (x13 + x29);
+ out[5] = (x15 + x31);
+ out[6] = (x17 + x33);
+ out[7] = (x19 + x35);
+ out[8] = (x18 + x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.log b/src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.log
new file mode 100644
index 000000000..3b92b1c5c
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1_9limbs/femul.c b/src/Specific/solinas64_2e521m1_9limbs/femul.c
new file mode 100644
index 000000000..1cc878a69
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/femul.c
@@ -0,0 +1,71 @@
+static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ { uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
+ { uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x2 * ((uint128_t)x18 * x34)));
+ { uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + ((0x2 * ((uint128_t)x19 * x34)) + (0x2 * ((uint128_t)x18 * x35))));
+ { uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + ((0x2 * ((uint128_t)x17 * x34)) + ((0x2 * ((uint128_t)x19 * x35)) + (0x2 * ((uint128_t)x18 * x33)))));
+ { uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + ((0x2 * ((uint128_t)x15 * x34)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + (0x2 * ((uint128_t)x18 * x31))))));
+ { uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + ((0x2 * ((uint128_t)x13 * x34)) + ((0x2 * ((uint128_t)x15 * x35)) + ((0x2 * ((uint128_t)x17 * x33)) + ((0x2 * ((uint128_t)x19 * x31)) + (0x2 * ((uint128_t)x18 * x29)))))));
+ { uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + ((0x2 * ((uint128_t)x11 * x34)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + (0x2 * ((uint128_t)x18 * x27))))))));
+ { uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + ((0x2 * ((uint128_t)x9 * x34)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + (0x2 * ((uint128_t)x18 * x25)))))))));
+ { uint128_t x44 = (((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x34)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + (0x2 * ((uint128_t)x18 * x23))))))))));
+ { uint128_t x45 = (x44 >> 0x3a);
+ { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffffffff);
+ { uint128_t x47 = (x45 + x43);
+ { uint128_t x48 = (x47 >> 0x3a);
+ { uint64_t x49 = ((uint64_t)x47 & 0x3ffffffffffffff);
+ { uint128_t x50 = (x48 + x42);
+ { uint128_t x51 = (x50 >> 0x3a);
+ { uint64_t x52 = ((uint64_t)x50 & 0x3ffffffffffffff);
+ { uint128_t x53 = (x51 + x41);
+ { uint128_t x54 = (x53 >> 0x3a);
+ { uint64_t x55 = ((uint64_t)x53 & 0x3ffffffffffffff);
+ { uint128_t x56 = (x54 + x40);
+ { uint128_t x57 = (x56 >> 0x3a);
+ { uint64_t x58 = ((uint64_t)x56 & 0x3ffffffffffffff);
+ { uint128_t x59 = (x57 + x39);
+ { uint128_t x60 = (x59 >> 0x3a);
+ { uint64_t x61 = ((uint64_t)x59 & 0x3ffffffffffffff);
+ { uint128_t x62 = (x60 + x38);
+ { uint128_t x63 = (x62 >> 0x3a);
+ { uint64_t x64 = ((uint64_t)x62 & 0x3ffffffffffffff);
+ { uint128_t x65 = (x63 + x37);
+ { uint128_t x66 = (x65 >> 0x3a);
+ { uint64_t x67 = ((uint64_t)x65 & 0x3ffffffffffffff);
+ { uint128_t x68 = (x66 + x36);
+ { uint128_t x69 = (x68 >> 0x39);
+ { uint64_t x70 = ((uint64_t)x68 & 0x1ffffffffffffff);
+ { uint128_t x71 = (x46 + x69);
+ { uint64_t x72 = (uint64_t) (x71 >> 0x3a);
+ { uint64_t x73 = ((uint64_t)x71 & 0x3ffffffffffffff);
+ { uint64_t x74 = (x72 + x49);
+ { uint64_t x75 = (x74 >> 0x3a);
+ { uint64_t x76 = (x74 & 0x3ffffffffffffff);
+ out[0] = x73;
+ out[1] = x76;
+ out[2] = (x75 + x52);
+ out[3] = x55;
+ out[4] = x58;
+ out[5] = x61;
+ out[6] = x64;
+ out[7] = x67;
+ out[8] = x70;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e521m1_9limbs/femulDisplay.log b/src/Specific/solinas64_2e521m1_9limbs/femulDisplay.log
new file mode 100644
index 000000000..811a3bdb6
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/femulDisplay.log
@@ -0,0 +1,48 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
+ uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x2 * ((uint128_t)x18 * x34)));
+ uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + ((0x2 * ((uint128_t)x19 * x34)) + (0x2 * ((uint128_t)x18 * x35))));
+ uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + ((0x2 * ((uint128_t)x17 * x34)) + ((0x2 * ((uint128_t)x19 * x35)) + (0x2 * ((uint128_t)x18 * x33)))));
+ uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + ((0x2 * ((uint128_t)x15 * x34)) + ((0x2 * ((uint128_t)x17 * x35)) + ((0x2 * ((uint128_t)x19 * x33)) + (0x2 * ((uint128_t)x18 * x31))))));
+ uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + ((0x2 * ((uint128_t)x13 * x34)) + ((0x2 * ((uint128_t)x15 * x35)) + ((0x2 * ((uint128_t)x17 * x33)) + ((0x2 * ((uint128_t)x19 * x31)) + (0x2 * ((uint128_t)x18 * x29)))))));
+ uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + ((0x2 * ((uint128_t)x11 * x34)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + (0x2 * ((uint128_t)x18 * x27))))))));
+ uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + ((0x2 * ((uint128_t)x9 * x34)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + (0x2 * ((uint128_t)x18 * x25)))))))));
+ uint128_t x44 = (((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x34)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + (0x2 * ((uint128_t)x18 * x23))))))))));
+ uint128_t x45 = (x44 >> 0x3a);
+ uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffffffff);
+ uint128_t x47 = (x45 + x43);
+ uint128_t x48 = (x47 >> 0x3a);
+ uint64_t x49 = ((uint64_t)x47 & 0x3ffffffffffffff);
+ uint128_t x50 = (x48 + x42);
+ uint128_t x51 = (x50 >> 0x3a);
+ uint64_t x52 = ((uint64_t)x50 & 0x3ffffffffffffff);
+ uint128_t x53 = (x51 + x41);
+ uint128_t x54 = (x53 >> 0x3a);
+ uint64_t x55 = ((uint64_t)x53 & 0x3ffffffffffffff);
+ uint128_t x56 = (x54 + x40);
+ uint128_t x57 = (x56 >> 0x3a);
+ uint64_t x58 = ((uint64_t)x56 & 0x3ffffffffffffff);
+ uint128_t x59 = (x57 + x39);
+ uint128_t x60 = (x59 >> 0x3a);
+ uint64_t x61 = ((uint64_t)x59 & 0x3ffffffffffffff);
+ uint128_t x62 = (x60 + x38);
+ uint128_t x63 = (x62 >> 0x3a);
+ uint64_t x64 = ((uint64_t)x62 & 0x3ffffffffffffff);
+ uint128_t x65 = (x63 + x37);
+ uint128_t x66 = (x65 >> 0x3a);
+ uint64_t x67 = ((uint64_t)x65 & 0x3ffffffffffffff);
+ uint128_t x68 = (x66 + x36);
+ uint128_t x69 = (x68 >> 0x39);
+ uint64_t x70 = ((uint64_t)x68 & 0x1ffffffffffffff);
+ uint128_t x71 = (x46 + x69);
+ uint64_t x72 = (uint64_t) (x71 >> 0x3a);
+ uint64_t x73 = ((uint64_t)x71 & 0x3ffffffffffffff);
+ uint64_t x74 = (x72 + x49);
+ uint64_t x75 = (x74 >> 0x3a);
+ uint64_t x76 = (x74 & 0x3ffffffffffffff);
+ return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesquare.c b/src/Specific/solinas64_2e521m1_9limbs/fesquare.c
new file mode 100644
index 000000000..2d3ee2421
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesquare.c
@@ -0,0 +1,62 @@
+static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
+ { const uint64_t x15 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
+ { uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x2 * ((uint128_t)x15 * x15)));
+ { uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + ((0x2 * ((uint128_t)x16 * x15)) + (0x2 * ((uint128_t)x15 * x16))));
+ { uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + ((0x2 * ((uint128_t)x14 * x15)) + ((0x2 * ((uint128_t)x16 * x16)) + (0x2 * ((uint128_t)x15 * x14)))));
+ { uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + ((0x2 * ((uint128_t)x12 * x15)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (0x2 * ((uint128_t)x15 * x12))))));
+ { uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + ((0x2 * ((uint128_t)x10 * x15)) + ((0x2 * ((uint128_t)x12 * x16)) + ((0x2 * ((uint128_t)x14 * x14)) + ((0x2 * ((uint128_t)x16 * x12)) + (0x2 * ((uint128_t)x15 * x10)))))));
+ { uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((0x2 * ((uint128_t)x8 * x15)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + (0x2 * ((uint128_t)x15 * x8))))))));
+ { uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((0x2 * ((uint128_t)x6 * x15)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + (0x2 * ((uint128_t)x15 * x6)))))))));
+ { uint128_t x25 = (((uint128_t)x2 * x2) + ((0x2 * ((uint128_t)x4 * x15)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + (0x2 * ((uint128_t)x15 * x4))))))))));
+ { uint128_t x26 = (x25 >> 0x3a);
+ { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
+ { uint128_t x28 = (x26 + x24);
+ { uint128_t x29 = (x28 >> 0x3a);
+ { uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffffffff);
+ { uint128_t x31 = (x29 + x23);
+ { uint128_t x32 = (x31 >> 0x3a);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffffff);
+ { uint128_t x34 = (x32 + x22);
+ { uint128_t x35 = (x34 >> 0x3a);
+ { uint64_t x36 = ((uint64_t)x34 & 0x3ffffffffffffff);
+ { uint128_t x37 = (x35 + x21);
+ { uint128_t x38 = (x37 >> 0x3a);
+ { uint64_t x39 = ((uint64_t)x37 & 0x3ffffffffffffff);
+ { uint128_t x40 = (x38 + x20);
+ { uint128_t x41 = (x40 >> 0x3a);
+ { uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffffffff);
+ { uint128_t x43 = (x41 + x19);
+ { uint128_t x44 = (x43 >> 0x3a);
+ { uint64_t x45 = ((uint64_t)x43 & 0x3ffffffffffffff);
+ { uint128_t x46 = (x44 + x18);
+ { uint128_t x47 = (x46 >> 0x3a);
+ { uint64_t x48 = ((uint64_t)x46 & 0x3ffffffffffffff);
+ { uint128_t x49 = (x47 + x17);
+ { uint128_t x50 = (x49 >> 0x39);
+ { uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffffff);
+ { uint128_t x52 = (x27 + x50);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x3a);
+ { uint64_t x54 = ((uint64_t)x52 & 0x3ffffffffffffff);
+ { uint64_t x55 = (x53 + x30);
+ { uint64_t x56 = (x55 >> 0x3a);
+ { uint64_t x57 = (x55 & 0x3ffffffffffffff);
+ out[0] = x54;
+ out[1] = x57;
+ out[2] = (x56 + x33);
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ out[6] = x45;
+ out[7] = x48;
+ out[8] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.log b/src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.log
new file mode 100644
index 000000000..95c38954d
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.log
@@ -0,0 +1,48 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
+ uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x2 * ((uint128_t)x15 * x15)));
+ uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + ((0x2 * ((uint128_t)x16 * x15)) + (0x2 * ((uint128_t)x15 * x16))));
+ uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + ((0x2 * ((uint128_t)x14 * x15)) + ((0x2 * ((uint128_t)x16 * x16)) + (0x2 * ((uint128_t)x15 * x14)))));
+ uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + ((0x2 * ((uint128_t)x12 * x15)) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (0x2 * ((uint128_t)x15 * x12))))));
+ uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + ((0x2 * ((uint128_t)x10 * x15)) + ((0x2 * ((uint128_t)x12 * x16)) + ((0x2 * ((uint128_t)x14 * x14)) + ((0x2 * ((uint128_t)x16 * x12)) + (0x2 * ((uint128_t)x15 * x10)))))));
+ uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((0x2 * ((uint128_t)x8 * x15)) + ((0x2 * ((uint128_t)x10 * x16)) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((0x2 * ((uint128_t)x16 * x10)) + (0x2 * ((uint128_t)x15 * x8))))))));
+ uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((0x2 * ((uint128_t)x6 * x15)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + (0x2 * ((uint128_t)x15 * x6)))))))));
+ uint128_t x25 = (((uint128_t)x2 * x2) + ((0x2 * ((uint128_t)x4 * x15)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + (0x2 * ((uint128_t)x15 * x4))))))))));
+ uint128_t x26 = (x25 >> 0x3a);
+ uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
+ uint128_t x28 = (x26 + x24);
+ uint128_t x29 = (x28 >> 0x3a);
+ uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffffffff);
+ uint128_t x31 = (x29 + x23);
+ uint128_t x32 = (x31 >> 0x3a);
+ uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffffff);
+ uint128_t x34 = (x32 + x22);
+ uint128_t x35 = (x34 >> 0x3a);
+ uint64_t x36 = ((uint64_t)x34 & 0x3ffffffffffffff);
+ uint128_t x37 = (x35 + x21);
+ uint128_t x38 = (x37 >> 0x3a);
+ uint64_t x39 = ((uint64_t)x37 & 0x3ffffffffffffff);
+ uint128_t x40 = (x38 + x20);
+ uint128_t x41 = (x40 >> 0x3a);
+ uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffffffff);
+ uint128_t x43 = (x41 + x19);
+ uint128_t x44 = (x43 >> 0x3a);
+ uint64_t x45 = ((uint64_t)x43 & 0x3ffffffffffffff);
+ uint128_t x46 = (x44 + x18);
+ uint128_t x47 = (x46 >> 0x3a);
+ uint64_t x48 = ((uint64_t)x46 & 0x3ffffffffffffff);
+ uint128_t x49 = (x47 + x17);
+ uint128_t x50 = (x49 >> 0x39);
+ uint64_t x51 = ((uint64_t)x49 & 0x1ffffffffffffff);
+ uint128_t x52 = (x27 + x50);
+ uint64_t x53 = (uint64_t) (x52 >> 0x3a);
+ uint64_t x54 = ((uint64_t)x52 & 0x3ffffffffffffff);
+ uint64_t x55 = (x53 + x30);
+ uint64_t x56 = (x55 >> 0x3a);
+ uint64_t x57 = (x55 & 0x3ffffffffffffff);
+ return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesub.c b/src/Specific/solinas64_2e521m1_9limbs/fesub.c
new file mode 100644
index 000000000..6e9f18b48
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesub.c
@@ -0,0 +1,30 @@
+static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
+ { const uint64_t x18 = in1[8];
+ { const uint64_t x19 = in1[7];
+ { const uint64_t x17 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x34 = in2[8];
+ { const uint64_t x35 = in2[7];
+ { const uint64_t x33 = in2[6];
+ { const uint64_t x31 = in2[5];
+ { const uint64_t x29 = in2[4];
+ { const uint64_t x27 = in2[3];
+ { const uint64_t x25 = in2[2];
+ { const uint64_t x23 = in2[1];
+ { const uint64_t x21 = in2[0];
+ out[0] = ((0x7fffffffffffffe + x5) - x21);
+ out[1] = ((0x7fffffffffffffe + x7) - x23);
+ out[2] = ((0x7fffffffffffffe + x9) - x25);
+ out[3] = ((0x7fffffffffffffe + x11) - x27);
+ out[4] = ((0x7fffffffffffffe + x13) - x29);
+ out[5] = ((0x7fffffffffffffe + x15) - x31);
+ out[6] = ((0x7fffffffffffffe + x17) - x33);
+ out[7] = ((0x7fffffffffffffe + x19) - x35);
+ out[8] = ((0x3fffffffffffffe + x18) - x34);
+ }}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.log b/src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.log
new file mode 100644
index 000000000..e68e71859
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
+ (((0x3fffffffffffffe + x18) - x34), ((0x7fffffffffffffe + x19) - x35), ((0x7fffffffffffffe + x17) - x33), ((0x7fffffffffffffe + x15) - x31), ((0x7fffffffffffffe + x13) - x29), ((0x7fffffffffffffe + x11) - x27), ((0x7fffffffffffffe + x9) - x25), ((0x7fffffffffffffe + x7) - x23), ((0x7fffffffffffffe + x5) - x21)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1_9limbs/freeze.c b/src/Specific/solinas64_2e521m1_9limbs/freeze.c
new file mode 100644
index 000000000..c5a502498
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/freeze.c
@@ -0,0 +1,49 @@
+static void freeze(uint64_t out[9], const uint64_t in1[9]) {
+ { const uint64_t x15 = in1[8];
+ { const uint64_t x16 = in1[7];
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffffffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3ffffffffffffff);
+ { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x3ffffffffffffff);
+ { uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3ffffffffffffff);
+ { uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffffffffffff);
+ { uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x1ffffffffffffff);
+ { uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
+ { uint64_t x45 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ { uint64_t x49 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ { uint64_t x53 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ { uint64_t x57 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ { uint64_t x61 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ { uint64_t x65 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ { uint64_t x69 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ { uint64_t x73 = (x44 & 0x3ffffffffffffff);
+ { uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ { uint64_t x77 = (x44 & 0x1ffffffffffffff);
+ { uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ out[0] = x47;
+ out[1] = x51;
+ out[2] = x55;
+ out[3] = x59;
+ out[4] = x63;
+ out[5] = x67;
+ out[6] = x71;
+ out[7] = x75;
+ out[8] = x79;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.log b/src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.log
new file mode 100644
index 000000000..ae47404fe
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.log
@@ -0,0 +1,35 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffffffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3ffffffffffffff);
+ uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x3ffffffffffffff);
+ uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3ffffffffffffff);
+ uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffffffffffff);
+ uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x1ffffffffffffff);
+ uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
+ uint64_t x45 = (x44 & 0x3ffffffffffffff);
+ uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
+ uint64_t x49 = (x44 & 0x3ffffffffffffff);
+ uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
+ uint64_t x53 = (x44 & 0x3ffffffffffffff);
+ uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
+ uint64_t x57 = (x44 & 0x3ffffffffffffff);
+ uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
+ uint64_t x61 = (x44 & 0x3ffffffffffffff);
+ uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
+ uint64_t x65 = (x44 & 0x3ffffffffffffff);
+ uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
+ uint64_t x69 = (x44 & 0x3ffffffffffffff);
+ uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
+ uint64_t x73 = (x44 & 0x3ffffffffffffff);
+ uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
+ uint64_t x77 = (x44 & 0x1ffffffffffffff);
+ uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
+ (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)