aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Andres Erbsen <andreser@mit.edu>2017-06-27 14:31:44 -0400
committerGravatar Andres Erbsen <andreser@mit.edu>2017-06-27 14:31:58 -0400
commit5397ade1bd1616de6658edc5322765b3c1c04d06 (patch)
tree8c481508498471c62a1eb3bb80c66c9d60ca3ed6 /src
parent163567bf8784708bc5e1b58c50450b8d5d5ab106 (diff)
p256 compilation and benchmarks with manual kludges
Diffstat (limited to 'src')
-rw-r--r--src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.s240
-rw-r--r--src/Specific/NISTP256/AMD64/bench_madd.c7
-rwxr-xr-xsrc/Specific/NISTP256/AMD64/compiler.sh4
-rwxr-xr-xsrc/Specific/NISTP256/AMD64/icc/compiler.sh4
-rw-r--r--src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s3059
-rw-r--r--src/Specific/NISTP256/AMD64/icc/measurements.txt1
-rw-r--r--src/Specific/NISTP256/AMD64/measurements.txt1
-rw-r--r--src/Specific/NISTP256/AMD64/p256.h2
-rw-r--r--src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c363
-rw-r--r--src/Specific/X25519/C64/measurements.txt2
10 files changed, 3442 insertions, 241 deletions
diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.s b/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.s
deleted file mode 100644
index 00472462f..000000000
--- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.s
+++ /dev/null
@@ -1,240 +0,0 @@
-.intel_syntax noprefix
-.section .text
-.globl IntegrationTestMontgomeryP256
-.type IntegrationTestMontgomeryP256, @function
-IntegrationTestMontgomeryP256:
-#icc17 -m64 -O3 -madx -march=skylake -mtune=skylake -fomit-frame-pointer -fno-stack-protector-all -opt-report
-#IntegrationTestMontgomeryP256(unsigned long*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long):
- push r12 #13.1
- push r13 #13.1
- push r14 #13.1
- push r15 #13.1
- push rbx #13.1
- push rbp #13.1
- mov rbx, r9 #13.1
- mov QWORD PTR [-32+rsp], rdx #13.1[spill]
- mov rdx, r8 #13.33
- mov QWORD PTR [-16+rsp], rdi #13.1[spill]
- mov r11, -1 #21.33
- xor edi, edi #17.32
- mov r9, QWORD PTR [72+rsp] #13.1
- mulx rax, rbp, QWORD PTR [64+rsp] #14.33
- mulx r15, r10, r9 #13.33
- adcx r10, rax #17.32
- mov rax, 0x0ffffffff #22.33
- mov QWORD PTR [-24+rsp], rsi #13.1[spill]
- mulx r14, rsi, QWORD PTR [56+rsp] #15.33
- adcx rbp, r14 #18.32
- mulx r8, r13, rbx #16.33
- mov rdx, r15 #21.33
- adcx rsi, r8 #19.32
- mov QWORD PTR [-40+rsp], rbx #13.1[spill]
- mov ebx, 0 #19.32
- mov r8d, ebx #20.30
- setb dil #19.32
- adox r8d, ebx #20.30
- mov r8d, ebx #20.30
- adox rdi, r13 #20.30
- mulx r12, r11, r11 #21.33
- seto r8b #20.30
- clc #24.32
- mulx r8, r13, rax #22.33
- mov rax, 0xffffffff00000001 #23.33
- adcx r11, r8 #24.32
- mov r8d, 0 #25.32
- mulx r14, rax, rax #23.33
- mov edx, ebx #27.30
- adcx r13, r8 #25.32
- adcx r14, r8 #26.32
- mov r8d, ebx #26.32
- setb r8b #26.32
- adox edx, ebx #27.30
- mov rdx, rcx #33.33
- adox r8, rax #27.30
- mov ecx, ebx #37.32
- clc #28.30
- adcx r15, r12 #28.30
- mulx r12, rax, r9 #33.33
- adcx r10, r11 #29.32
- adcx rbp, r13 #30.32
- mulx r13, r15, QWORD PTR [56+rsp] #35.33
- adcx rsi, r14 #31.32
- mulx r14, r9, QWORD PTR [64+rsp] #34.33
- adcx rdi, r8 #32.32
- mov r8d, ebx #32.32
- mulx rdx, r11, QWORD PTR [-40+rsp] #36.33[spill]
- setb r8b #32.32
- adox ecx, ebx #37.32
- mov rcx, -1 #46.35
- adox rax, r14 #37.32
- mov r14d, ebx #39.32
- adox r9, r13 #38.32
- adox r15, rdx #39.32
- seto r14b #39.32
- clc #40.30
- adcx r14, r11 #40.30
- mov r11d, ebx #41.34
- adox r11d, ebx #41.34
- mov r11d, ebx #45.34
- adox r10, r12 #41.34
- mov rdx, r10 #46.35
- adox rbp, rax #42.34
- mov rax, 0x0ffffffff #47.35
- mulx r12, rax, rax #47.35
- adox rsi, r9 #43.34
- mov r9, 0xffffffff00000001 #48.35
- adox rdi, r15 #44.34
- adox r8, r14 #45.34
- mulx r14, r13, rcx #46.35
- seto r11b #45.34
- clc #49.34
- mulx r15, rcx, r9 #48.35
- mov r9d, ebx #52.31
- adcx r13, r12 #49.34
- mov r12d, 0 #50.34
- mov rdx, QWORD PTR [-32+rsp] #59.35[spill]
- adcx rax, r12 #50.34
- adcx r15, r12 #51.34
- mov r12d, ebx #51.34
- setb r12b #51.34
- adox r9d, ebx #52.31
- adox r12, rcx #52.31
- clc #53.31
- adcx r10, r14 #53.31
- mov r10d, ebx #57.34
- adcx rbp, r13 #54.34
- mulx r14, r13, QWORD PTR [72+rsp] #59.35
- adcx rsi, rax #55.34
- mulx rax, r9, QWORD PTR [56+rsp] #61.35
- adcx rdi, r15 #56.34
- mov r15d, ebx #63.34
- adcx r8, r12 #57.34
- setb r10b #57.34
- adox r15d, ebx #63.34
- mov DWORD PTR [-8+rsp], r10d #57.34[spill]
- mulx r10, r12, QWORD PTR [64+rsp] #60.35
- adox r13, r10 #63.34
- mov r10d, ebx #67.34
- mulx rdx, rcx, QWORD PTR [-40+rsp] #62.35[spill]
- adox r12, rax #64.34
- mov eax, ebx #65.34
- adox r9, rdx #65.34
- seto al #65.34
- clc #66.31
- adcx rax, rcx #66.31
- adox r10d, ebx #67.34
- mov ecx, DWORD PTR [-8+rsp] #71.34[spill]
- adox rbp, r14 #67.34
- mov r14d, ebx #70.34
- mov rdx, rbp #72.35
- adox rsi, r13 #68.34
- adox rdi, r12 #69.34
- adox r8, r9 #70.34
- mov r9, 0xffffffff00000001 #74.35
- mulx r10, r9, r9 #74.35
- seto r14b #70.34
- xor r15d, r15d #70.34
- add ecx, r11d #71.34
- cmp ebx, r14d #71.34
- mov r11, 0x0ffffffff #73.35
- mulx r11, r14, r11 #73.35
- adcx rcx, rax #71.34
- mov rax, -1 #72.35
- mulx r13, r12, rax #72.35
- mov edx, ebx #75.34
- setb r15b #71.34
- adox edx, ebx #75.34
- mov rdx, QWORD PTR [-24+rsp] #85.35[spill]
- adox r12, r11 #75.34
- mov r11d, 0 #76.34
- adox r14, r11 #76.34
- adox r10, r11 #77.34
- mov r11d, ebx #77.34
- seto r11b #77.34
- clc #78.31
- adcx r11, r9 #78.31
- mov r9d, ebx #79.31
- adox r9d, ebx #79.31
- adox rbp, r13 #79.31
- mulx r13, r9, QWORD PTR [64+rsp] #86.35
- adox rsi, r12 #80.34
- adox rdi, r14 #81.34
- adox r8, r10 #82.34
- mov r10d, ebx #83.34
- adox rcx, r11 #83.34
- mulx r11, rbp, QWORD PTR [72+rsp] #85.35
- seto r10b #83.34
- clc #89.34
- adcx rbp, r13 #89.34
- mulx r14, r13, QWORD PTR [56+rsp] #87.35
- adcx r9, r14 #90.34
- mulx r14, r12, QWORD PTR [-40+rsp] #88.35[spill]
- mov edx, ebx #92.31
- adcx r13, r14 #91.34
- mov r14d, ebx #91.34
- setb r14b #91.34
- adox edx, ebx #92.31
- adox r14, r12 #92.31
- mov r12d, ebx #92.31
- seto r12b #92.31
- clc #93.34
- adcx rsi, r11 #93.34
- mov r11, 0x0ffffffff #99.35
- mov rdx, rsi #98.35
- adcx rdi, rbp #94.34
- mov ebp, ebx #96.34
- adcx r8, r9 #95.34
- mulx r9, r11, r11 #99.35
- adcx rcx, r13 #96.34
- mulx r12, r13, rax #98.35
- setb bpl #96.34
- add r10d, r15d #97.34
- cmp ebx, ebp #97.34
- mov rbp, 0xffffffff00000001 #100.35
- mulx rbp, r15, rbp #100.35
- mov edx, ebx #101.34
- adcx r10, r14 #97.34
- mov r14d, ebx #97.34
- setb r14b #97.34
- adox edx, ebx #101.34
- mov edx, 0 #102.34
- adox r13, r9 #101.34
- mov r9d, ebx #103.34
- adox r11, rdx #102.34
- adox rbp, rdx #103.34
- seto r9b #103.34
- clc #104.31
- adcx r9, r15 #104.31
- mov r15d, ebx #105.31
- adox r15d, ebx #105.31
- adox rsi, r12 #105.31
- mov esi, ebx #109.34
- adox rdi, r13 #106.34
- adox r8, r11 #107.34
- adox rcx, rbp #108.34
- adox r10, r9 #109.34
- seto sil #109.34
- xor ebp, ebp #109.34
- add esi, r14d #110.26
- mov rsi, QWORD PTR [-16+rsp] #122.1[spill]
- cmove rax, rdx #111.40
- sub rdi, rax #113.34
- mov QWORD PTR [24+rsi], rdi #122.1
- mov edi, eax #115.34
- sbb r8, rdi #115.34
- mov QWORD PTR [16+rsi], r8 #121.1
- sbb rcx, rdx #116.34
- mov rdx, 0xffffffff00000001 #118.31
- mov QWORD PTR [8+rsi], rcx #120.1
- setb bpl #116.34
- and rdx, rax #118.31
- cmp ebx, ebp #118.31
- sbb r10, rdx #118.31
- mov QWORD PTR [rsi], r10 #119.1
- pop rbp #123.106
- pop rbx #123.106
- pop r15 #123.106
- pop r14 #123.106
- pop r13 #123.106
- pop r12 #123.106
- ret #123.106
diff --git a/src/Specific/NISTP256/AMD64/bench_madd.c b/src/Specific/NISTP256/AMD64/bench_madd.c
new file mode 100644
index 000000000..f247a6670
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/bench_madd.c
@@ -0,0 +1,7 @@
+#include <stdint.h>
+#include "p256.h"
+
+void bench_madd(unsigned char* buf) {
+ uint64_t* r = (uint64_t*) buf;
+ p256_jacobian_add_affine(r, r, r+12);
+}
diff --git a/src/Specific/NISTP256/AMD64/compiler.sh b/src/Specific/NISTP256/AMD64/compiler.sh
new file mode 100755
index 000000000..4a9f2ce77
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+gcc -march=native -mtune=native -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes $@
diff --git a/src/Specific/NISTP256/AMD64/icc/compiler.sh b/src/Specific/NISTP256/AMD64/icc/compiler.sh
new file mode 100755
index 000000000..4a9f2ce77
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/icc/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+gcc -march=native -mtune=native -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes $@
diff --git a/src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s b/src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s
new file mode 100644
index 000000000..08822f667
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s
@@ -0,0 +1,3059 @@
+.intel_syntax noprefix
+.section .text
+.globl p256_jacobian_add_affine
+.type p256_jacobian_add_affine, @function
+p256_jacobian_add_affine:
+ push r12 #306.3
+ push r13 #306.3
+ push r14 #306.3
+ push r15 #306.3
+ push rbx #306.3
+ push rbp #306.3
+ sub rsp, 424 #306.3
+ mov QWORD PTR [104+rsp], rdx #306.3[spill]
+ pxor xmm0, xmm0 #315.20
+ mov QWORD PTR [96+rsp], rsi #306.3[spill]
+ mov QWORD PTR [112+rsp], rdi #306.3[spill]
+ movups XMMWORD PTR [64+rsp], xmm0 #315.20
+ movups XMMWORD PTR [80+rsp], xmm0 #315.20
+ mov r8, rdi #315.41
+ mov r15, -1 #196.33
+ xor r9d, r9d #192.32
+ vpxor xmm0, xmm0, xmm0 #317.20
+ mov r10, QWORD PTR [64+r8] #315.62
+ mov rdx, r10 #188.33
+ mov r11, QWORD PTR [72+r8] #315.55
+ mov rdi, QWORD PTR [88+r8] #315.41
+ mov rsi, QWORD PTR [80+r8] #315.48
+ mulx r13, r12, r10 #188.33
+ mulx r8, rbp, r11 #189.33
+ adcx r12, r8 #192.32
+ mov QWORD PTR [168+rsp], rsi #315.48[spill]
+ mulx rbx, rsi, rsi #190.33
+ adcx rbp, rbx #193.32
+ mov rbx, 0x0ffffffff #197.33
+ mulx rcx, rax, rdi #191.33
+ mov rdx, r13 #196.33
+ adcx rsi, rcx #194.32
+ mov rcx, 0xffffffff00000001 #198.33
+ mov QWORD PTR [160+rsp], rdi #315.41[spill]
+ mov edi, 0 #192.32
+ mov r8d, edi #194.32
+ setb r8b #194.32
+ adox r9d, edi #195.30
+ mov r9d, edi #195.30
+ adox r8, rax #195.30
+ mulx r15, r14, r15 #196.33
+ seto r9b #195.30
+ clc #199.32
+ mulx r9, rax, rbx #197.33
+ adcx r14, r9 #199.32
+ mov r9d, 0 #200.32
+ mulx rcx, rbx, rcx #198.33
+ mov edx, edi #202.30
+ adcx rax, r9 #200.32
+ mov QWORD PTR [176+rsp], r11 #315.55[spill]
+ adcx rcx, r9 #201.32
+ mov r9d, edi #201.32
+ mov QWORD PTR [152+rsp], r10 #315.62[spill]
+ setb r9b #201.32
+ adox edx, edi #202.30
+ mov rdx, r11 #208.33
+ adox r9, rbx #202.30
+ clc #203.30
+ adcx r13, r15 #203.30
+ mulx r15, r13, QWORD PTR [168+rsp] #210.33[spill]
+ adcx r12, r14 #204.32
+ adcx rbp, rax #205.32
+ mulx rax, r14, r11 #209.33
+ mov r11d, edi #212.32
+ adcx rsi, rcx #206.32
+ mulx r10, rcx, r10 #208.33
+ adcx r8, r9 #207.32
+ mov r9d, edi #207.32
+ mulx rdx, rbx, QWORD PTR [160+rsp] #211.33[spill]
+ setb r9b #207.32
+ adox r11d, edi #212.32
+ mov r11, 0xffffffff00000001 #223.35
+ adox rcx, rax #212.32
+ mov eax, edi #214.32
+ adox r14, r15 #213.32
+ mov r15d, edi #216.34
+ adox r13, rdx #214.32
+ seto al #214.32
+ clc #215.30
+ adcx rax, rbx #215.30
+ adox r15d, edi #216.34
+ mov ebx, edi #220.34
+ adox r12, r10 #216.34
+ mov rdx, r12 #221.35
+ adox rbp, rcx #217.34
+ mov rcx, -1 #221.35
+ mulx r15, r10, rcx #221.35
+ adox rsi, r14 #218.34
+ mov r14, 0x0ffffffff #222.35
+ adox r8, r13 #219.34
+ adox r9, rax #220.34
+ mulx r13, rax, r14 #222.35
+ mov r14d, 0 #225.34
+ seto bl #220.34
+ clc #224.34
+ adcx r10, r13 #224.34
+ mulx rcx, r13, r11 #223.35
+ mov r11d, edi #227.31
+ adcx rax, r14 #225.34
+ mov rdx, QWORD PTR [168+rsp] #234.35[spill]
+ adcx rcx, r14 #226.34
+ mov r14d, edi #226.34
+ setb r14b #226.34
+ adox r11d, edi #227.31
+ adox r14, r13 #227.31
+ mov r13d, edi #238.34
+ clc #228.31
+ adcx r12, r15 #228.31
+ mulx r15, r11, rdx #236.35
+ adcx rbp, r10 #229.34
+ mov r10d, edi #232.34
+ adcx rsi, rax #230.34
+ adcx r8, rcx #231.34
+ adcx r9, r14 #232.34
+ mulx rax, r14, QWORD PTR [176+rsp] #235.35[spill]
+ setb r10b #232.34
+ adox r13d, edi #238.34
+ mov DWORD PTR [32+rsp], r10d #232.34[spill]
+ mulx r10, r12, QWORD PTR [152+rsp] #234.35[spill]
+ adox r12, rax #238.34
+ mov eax, edi #240.34
+ mulx rdx, rcx, QWORD PTR [160+rsp] #237.35[spill]
+ adox r14, r15 #239.34
+ mov r15d, edi #242.34
+ adox r11, rdx #240.34
+ seto al #240.34
+ clc #241.31
+ adcx rax, rcx #241.31
+ adox r15d, edi #242.34
+ mov r15, 0x0ffffffff #248.35
+ adox rbp, r10 #242.34
+ mov rdx, rbp #247.35
+ adox rsi, r12 #243.34
+ mov r12d, edi #245.34
+ mulx r10, r15, r15 #248.35
+ adox r8, r14 #244.34
+ adox r9, r11 #245.34
+ seto r12b #245.34
+ xor ecx, ecx #245.34
+ add ebx, DWORD PTR [32+rsp] #246.34[spill]
+ cmp edi, r12d #246.34
+ mov r12, 0xffffffff00000001 #249.35
+ adcx rbx, rax #246.34
+ mov rax, -1 #247.35
+ mulx r14, r13, rax #247.35
+ mulx r12, r11, r12 #249.35
+ mov edx, edi #250.34
+ setb cl #246.34
+ adox edx, edi #250.34
+ mov rdx, QWORD PTR [160+rsp] #260.35[spill]
+ adox r13, r10 #250.34
+ mov r10d, 0 #251.34
+ adox r15, r10 #251.34
+ adox r12, r10 #252.34
+ mov r10d, edi #252.34
+ seto r10b #252.34
+ clc #253.31
+ adcx r10, r11 #253.31
+ mov r11d, edi #254.31
+ adox r11d, edi #254.31
+ adox rbp, r14 #254.31
+ adox rsi, r13 #255.34
+ mov r13d, edi #258.34
+ adox r8, r15 #256.34
+ mulx rbp, r15, QWORD PTR [176+rsp] #261.35[spill]
+ adox r9, r12 #257.34
+ mulx r12, r11, QWORD PTR [152+rsp] #260.35[spill]
+ adox rbx, r10 #258.34
+ seto r13b #258.34
+ clc #264.34
+ adcx r11, rbp #264.34
+ mulx rbp, r14, QWORD PTR [168+rsp] #262.35[spill]
+ adcx r15, rbp #265.34
+ mulx rbp, r10, rdx #263.35
+ mov edx, edi #267.31
+ adcx r14, rbp #266.34
+ mov ebp, edi #266.34
+ setb bpl #266.34
+ adox edx, edi #267.31
+ adox rbp, r10 #267.31
+ clc #268.34
+ adcx rsi, r12 #268.34
+ mov rdx, rsi #273.35
+ adcx r8, r11 #269.34
+ adcx r9, r15 #270.34
+ mov r15, 0x0ffffffff #274.35
+ mulx r15, r11, r15 #274.35
+ adcx rbx, r14 #271.34
+ mov r14d, edi #271.34
+ setb r14b #271.34
+ xor r10d, r10d #271.34
+ add ecx, r13d #272.34
+ cmp edi, r14d #272.34
+ mov r13, 0xffffffff00000001 #275.35
+ mulx r14, r12, rax #273.35
+ adcx rcx, rbp #272.34
+ mulx rbp, r13, r13 #275.35
+ mov edx, edi #276.34
+ setb r10b #272.34
+ adox edx, edi #276.34
+ mov edx, edi #278.34
+ adox r12, r15 #276.34
+ mov r15d, 0 #277.34
+ adox r11, r15 #277.34
+ adox rbp, r15 #278.34
+ seto dl #278.34
+ clc #279.31
+ adcx rdx, r13 #279.31
+ mov r13d, edi #280.31
+ adox r13d, edi #280.31
+ adox rsi, r14 #280.31
+ mov esi, edi #284.34
+ adox r8, r12 #281.34
+ adox r9, r11 #282.34
+ mov r11, 0xffffffff00000001 #289.34
+ adox rbx, rbp #283.34
+ mov rbp, r9 #287.34
+ adox rcx, rdx #284.34
+ mov rdx, rcx #289.34
+ seto sil #284.34
+ xor r12d, r12d #284.34
+ add r10d, esi #290.31
+ mov rsi, r8 #286.34
+ sub rsi, rax #286.34
+ mov rax, 0x0ffffffff #287.34
+ sbb rbp, rax #287.34
+ mov rax, rbx #288.34
+ sbb rax, r15 #288.34
+ sbb rdx, r11 #289.34
+ setb r12b #289.34
+ cmp edi, r12d #290.31
+ sbb r10, r15 #290.31
+ setb dil #290.31
+ dec rdi #9.35
+ and rdx, rdi #10.31
+ and rax, rdi #10.31
+ and rbp, rdi #10.31
+ and rsi, rdi #10.31
+ not rdi #10.43
+ and rcx, rdi #10.60
+ and rbx, rdi #10.60
+ and r9, rdi #10.60
+ and rdi, r8 #10.60
+ or rdx, rcx #10.60
+ or rax, rbx #10.60
+ or rbp, r9 #10.60
+ or rsi, rdi #10.60
+ mov QWORD PTR [64+rsp], rdx #315.37
+ mov QWORD PTR [72+rsp], rax #315.37
+ mov QWORD PTR [80+rsp], rbp #315.37
+ mov QWORD PTR [88+rsp], rsi #315.37
+ vmovups XMMWORD PTR [rsp], xmm0 #317.20
+ vmovups XMMWORD PTR [16+rsp], xmm0 #317.20
+ mov r9, QWORD PTR [96+rsp] #317.66[spill]
+ mov r14, -1 #81.33
+ mov QWORD PTR [128+rsp], rsi #[spill]
+ mov QWORD PTR [120+rsp], rbp #[spill]
+ vpxor xmm0, xmm0, xmm0 #319.21
+ mov rdi, QWORD PTR [24+r9] #317.66
+ mov r8, QWORD PTR [16+r9] #317.73
+ mov rsi, QWORD PTR [8+r9] #317.80
+ mov r11, QWORD PTR [r9] #317.87
+ xor r9d, r9d #77.32
+ mulx r10, r12, r11 #73.33
+ mulx rbx, rbp, rsi #74.33
+ adcx r12, rbx #77.32
+ mov rbx, 0x0ffffffff #82.33
+ mov QWORD PTR [200+rsp], rsi #317.80[spill]
+ mulx rcx, rsi, r8 #75.33
+ adcx rbp, rcx #78.32
+ mov rcx, 0xffffffff00000001 #83.33
+ mov QWORD PTR [192+rsp], r8 #317.73[spill]
+ mulx r8, r15, rdi #76.33
+ mov rdx, r10 #81.33
+ adcx rsi, r8 #79.32
+ mov r8d, 0 #79.32
+ mov QWORD PTR [184+rsp], rdi #317.66[spill]
+ mov edi, r8d #80.30
+ setb r9b #79.32
+ adox edi, r8d #80.30
+ mov edi, r8d #80.30
+ adox r9, r15 #80.30
+ mulx r14, r13, r14 #81.33
+ seto dil #80.30
+ clc #84.32
+ mulx rdi, r15, rbx #82.33
+ adcx r13, rdi #84.32
+ mov edi, 0 #85.32
+ mulx rcx, rbx, rcx #83.33
+ mov edx, r8d #87.30
+ adcx r15, rdi #85.32
+ mov QWORD PTR [208+rsp], r11 #317.87[spill]
+ adcx rcx, rdi #86.32
+ mov edi, r8d #86.32
+ setb dil #86.32
+ adox edx, r8d #87.30
+ mov rdx, rax #93.33
+ adox rdi, rbx #87.30
+ mov eax, r8d #97.32
+ clc #88.30
+ adcx r10, r14 #88.30
+ adcx r12, r13 #89.32
+ mulx r10, r13, QWORD PTR [192+rsp] #95.33[spill]
+ adcx rbp, r15 #90.32
+ adcx rsi, rcx #91.32
+ mulx r14, rcx, r11 #93.33
+ adcx r9, rdi #92.32
+ mov edi, r8d #92.32
+ mulx r15, r11, QWORD PTR [200+rsp] #94.33[spill]
+ setb dil #92.32
+ adox eax, r8d #97.32
+ mulx rdx, rbx, QWORD PTR [184+rsp] #96.33[spill]
+ adox rcx, r15 #97.32
+ mov r15d, r8d #99.32
+ adox r11, r10 #98.32
+ mov r10d, r8d #101.34
+ adox r13, rdx #99.32
+ seto r15b #99.32
+ clc #100.30
+ adcx r15, rbx #100.30
+ adox r10d, r8d #101.34
+ mov ebx, r8d #105.34
+ adox r12, r14 #101.34
+ mov rdx, r12 #106.35
+ adox rbp, rcx #102.34
+ mov rcx, 0x0ffffffff #107.35
+ mulx r14, rax, rcx #107.35
+ adox rsi, r11 #103.34
+ mov r11, -1 #106.35
+ adox r9, r13 #104.34
+ adox rdi, r15 #105.34
+ mulx r15, r10, r11 #106.35
+ mov r11, 0xffffffff00000001 #108.35
+ seto bl #105.34
+ clc #109.34
+ mulx rcx, r13, r11 #108.35
+ mov r11d, r8d #112.31
+ adcx r10, r14 #109.34
+ mov r14d, 0 #110.34
+ mov rdx, QWORD PTR [120+rsp] #119.35[spill]
+ adcx rax, r14 #110.34
+ adcx rcx, r14 #111.34
+ mov r14d, r8d #111.34
+ setb r14b #111.34
+ adox r11d, r8d #112.31
+ adox r14, r13 #112.31
+ clc #113.31
+ mov r13d, r8d #123.34
+ adcx r12, r15 #113.31
+ mov r12d, r8d #117.34
+ adcx rbp, r10 #114.34
+ mulx r15, r11, QWORD PTR [192+rsp] #121.35[spill]
+ adcx rsi, rax #115.34
+ adcx r9, rcx #116.34
+ adcx rdi, r14 #117.34
+ mulx rax, r14, QWORD PTR [200+rsp] #120.35[spill]
+ setb r12b #117.34
+ adox r13d, r8d #123.34
+ mov DWORD PTR [136+rsp], r12d #117.34[spill]
+ mulx r10, r12, QWORD PTR [208+rsp] #119.35[spill]
+ adox r12, rax #123.34
+ mov eax, r8d #125.34
+ mulx rdx, rcx, QWORD PTR [184+rsp] #122.35[spill]
+ adox r14, r15 #124.34
+ mov r15d, r8d #127.34
+ adox r11, rdx #125.34
+ seto al #125.34
+ clc #126.31
+ adcx rax, rcx #126.31
+ adox r15d, r8d #127.34
+ adox rbp, r10 #127.34
+ mov r10d, r8d #130.34
+ mov rdx, rbp #132.35
+ adox rsi, r12 #128.34
+ mov r12, 0x0ffffffff #133.35
+ adox r9, r14 #129.34
+ adox rdi, r11 #130.34
+ mov r11, 0xffffffff00000001 #134.35
+ seto r10b #130.34
+ xor ecx, ecx #130.34
+ add ebx, DWORD PTR [136+rsp] #131.34[spill]
+ cmp r8d, r10d #131.34
+ mulx r10, r15, r12 #133.35
+ adcx rbx, rax #131.34
+ mov rax, -1 #132.35
+ mulx r14, r13, rax #132.35
+ mulx r12, r11, r11 #134.35
+ mov edx, r8d #135.34
+ setb cl #131.34
+ adox edx, r8d #135.34
+ mov rdx, QWORD PTR [128+rsp] #145.35[spill]
+ adox r13, r10 #135.34
+ mov r10d, 0 #136.34
+ adox r15, r10 #136.34
+ adox r12, r10 #137.34
+ mov r10d, r8d #137.34
+ seto r10b #137.34
+ clc #138.31
+ adcx r10, r11 #138.31
+ mov r11d, r8d #139.31
+ adox r11d, r8d #139.31
+ adox rbp, r14 #139.31
+ adox rsi, r13 #140.34
+ mov r13d, r8d #143.34
+ adox r9, r15 #141.34
+ mulx rbp, r15, QWORD PTR [200+rsp] #146.35[spill]
+ adox rdi, r12 #142.34
+ mulx r12, r11, QWORD PTR [208+rsp] #145.35[spill]
+ adox rbx, r10 #143.34
+ seto r13b #143.34
+ clc #149.34
+ adcx r11, rbp #149.34
+ mulx rbp, r14, QWORD PTR [192+rsp] #147.35[spill]
+ adcx r15, rbp #150.34
+ mulx rbp, r10, QWORD PTR [184+rsp] #148.35[spill]
+ mov edx, r8d #152.31
+ adcx r14, rbp #151.34
+ mov ebp, r8d #151.34
+ setb bpl #151.34
+ adox edx, r8d #152.31
+ adox rbp, r10 #152.31
+ clc #153.34
+ adcx rsi, r12 #153.34
+ mov rdx, rsi #158.35
+ adcx r9, r11 #154.34
+ adcx rdi, r15 #155.34
+ mov r15, 0x0ffffffff #159.35
+ mulx r15, r11, r15 #159.35
+ adcx rbx, r14 #156.34
+ mov r14d, r8d #156.34
+ setb r14b #156.34
+ xor r10d, r10d #156.34
+ add ecx, r13d #157.34
+ cmp r8d, r14d #157.34
+ mov r13, 0xffffffff00000001 #160.35
+ mulx r14, r12, rax #158.35
+ adcx rcx, rbp #157.34
+ mulx rbp, r13, r13 #160.35
+ mov edx, r8d #161.34
+ setb r10b #157.34
+ adox edx, r8d #161.34
+ mov edx, r8d #163.34
+ adox r12, r15 #161.34
+ mov r15d, 0 #162.34
+ adox r11, r15 #162.34
+ adox rbp, r15 #163.34
+ seto dl #163.34
+ clc #164.31
+ adcx rdx, r13 #164.31
+ mov r13d, r8d #165.31
+ adox r13d, r8d #165.31
+ adox rsi, r14 #165.31
+ mov esi, r8d #169.34
+ adox r9, r12 #166.34
+ adox rdi, r11 #167.34
+ mov r11, 0xffffffff00000001 #174.34
+ adox rbx, rbp #168.34
+ mov rbp, rdi #172.34
+ adox rcx, rdx #169.34
+ mov rdx, rcx #174.34
+ seto sil #169.34
+ xor r12d, r12d #169.34
+ add r10d, esi #175.31
+ mov rsi, r9 #171.34
+ sub rsi, rax #171.34
+ mov rax, 0x0ffffffff #172.34
+ sbb rbp, rax #172.34
+ mov rax, rbx #173.34
+ sbb rax, r15 #173.34
+ sbb rdx, r11 #174.34
+ setb r12b #174.34
+ cmp r8d, r12d #175.31
+ sbb r10, r15 #175.31
+ setb r8b #175.31
+ dec r8 #9.35
+ and rdx, r8 #10.31
+ and rax, r8 #10.31
+ and rbp, r8 #10.31
+ and rsi, r8 #10.31
+ not r8 #10.43
+ and rcx, r8 #10.60
+ and rbx, r8 #10.60
+ and rdi, r8 #10.60
+ and r8, r9 #10.60
+ or rdx, rcx #10.60
+ or rax, rbx #10.60
+ or rbp, rdi #10.60
+ or rsi, r8 #10.60
+ mov QWORD PTR [64+rsp], rdx #317.34
+ mov QWORD PTR [72+rsp], rax #317.34
+ mov QWORD PTR [80+rsp], rbp #317.34
+ mov QWORD PTR [88+rsp], rsi #317.34
+ vmovups XMMWORD PTR [32+rsp], xmm0 #319.21
+ vmovups XMMWORD PTR [48+rsp], xmm0 #319.21
+ mov QWORD PTR [128+rsp], rsi #[spill]
+ mov r15, -1 #81.33
+ xor r9d, r9d #77.32
+ mov r11, QWORD PTR [152+rsp] #73.33[spill]
+ vpxor xmm0, xmm0, xmm0 #320.19
+ mulx r8, rsi, QWORD PTR [176+rsp] #74.33[spill]
+ mulx r10, r12, r11 #73.33
+ adcx r12, r8 #77.32
+ mov r8d, 0 #79.32
+ mov QWORD PTR [120+rsp], rbp #[spill]
+ mulx rbp, rdi, QWORD PTR [168+rsp] #75.33[spill]
+ adcx rsi, rbp #78.32
+ mov ebp, r8d #80.30
+ mulx rcx, rbx, QWORD PTR [160+rsp] #76.33[spill]
+ mov rdx, r10 #81.33
+ adcx rdi, rcx #79.32
+ mov rcx, 0xffffffff00000001 #83.33
+ mulx r14, r13, r15 #81.33
+ setb r9b #79.32
+ adox ebp, r8d #80.30
+ adox r9, rbx #80.30
+ mulx rbx, rcx, rcx #83.33
+ mov rbp, 0x0ffffffff #82.33
+ clc #84.32
+ mulx rbp, r15, rbp #82.33
+ mov edx, r8d #87.30
+ adcx r13, rbp #84.32
+ mov ebp, 0 #85.32
+ adcx r15, rbp #85.32
+ adcx rbx, rbp #86.32
+ mov ebp, r8d #86.32
+ setb bpl #86.32
+ adox edx, r8d #87.30
+ mov rdx, rax #93.33
+ adox rbp, rcx #87.30
+ mov eax, r8d #97.32
+ clc #88.30
+ adcx r10, r14 #88.30
+ adcx r12, r13 #89.32
+ adcx rsi, r15 #90.32
+ mulx r15, r13, QWORD PTR [168+rsp] #95.33[spill]
+ adcx rdi, rbx #91.32
+ mulx r10, rbx, r11 #93.33
+ adcx r9, rbp #92.32
+ mov ebp, r8d #92.32
+ mulx r11, r14, QWORD PTR [176+rsp] #94.33[spill]
+ setb bpl #92.32
+ adox eax, r8d #97.32
+ mulx rdx, rcx, QWORD PTR [160+rsp] #96.33[spill]
+ adox rbx, r11 #97.32
+ mov r11d, r8d #99.32
+ adox r14, r15 #98.32
+ mov r15d, r8d #101.34
+ adox r13, rdx #99.32
+ seto r11b #99.32
+ clc #100.30
+ adcx r11, rcx #100.30
+ adox r15d, r8d #101.34
+ mov ecx, r8d #105.34
+ adox r12, r10 #101.34
+ mov r10, -1 #106.35
+ mov rdx, r12 #106.35
+ adox rsi, rbx #102.34
+ mov rbx, 0x0ffffffff #107.35
+ adox rdi, r14 #103.34
+ mulx r14, rax, rbx #107.35
+ adox r9, r13 #104.34
+ adox rbp, r11 #105.34
+ mulx r11, r15, r10 #106.35
+ mov r10, 0xffffffff00000001 #108.35
+ seto cl #105.34
+ clc #109.34
+ mulx rbx, r13, r10 #108.35
+ mov r10d, r8d #111.34
+ adcx r15, r14 #109.34
+ mov r14d, 0 #110.34
+ mov rdx, QWORD PTR [120+rsp] #119.35[spill]
+ adcx rax, r14 #110.34
+ adcx rbx, r14 #111.34
+ mov r14d, r8d #112.31
+ setb r10b #111.34
+ adox r14d, r8d #112.31
+ adox r10, r13 #112.31
+ clc #113.31
+ mov r13d, r8d #123.34
+ adcx r12, r11 #113.31
+ mov r12d, r8d #117.34
+ adcx rsi, r15 #114.34
+ mulx r11, r14, QWORD PTR [168+rsp] #121.35[spill]
+ adcx rdi, rax #115.34
+ adcx r9, rbx #116.34
+ adcx rbp, r10 #117.34
+ mulx r15, r10, QWORD PTR [152+rsp] #119.35[spill]
+ setb r12b #117.34
+ adox r13d, r8d #123.34
+ mov DWORD PTR [136+rsp], r12d #117.34[spill]
+ mulx rbx, r12, QWORD PTR [176+rsp] #120.35[spill]
+ adox r10, rbx #123.34
+ mov ebx, r8d #125.34
+ mulx rdx, rax, QWORD PTR [160+rsp] #122.35[spill]
+ adox r12, r11 #124.34
+ mov r11d, r8d #127.34
+ adox r14, rdx #125.34
+ seto bl #125.34
+ clc #126.31
+ adcx rbx, rax #126.31
+ adox r11d, r8d #127.34
+ adox rsi, r15 #127.34
+ mov r15d, r8d #130.34
+ mov rdx, rsi #132.35
+ adox rdi, r10 #128.34
+ mov r10, 0x0ffffffff #133.35
+ adox r9, r12 #129.34
+ mov r12, 0xffffffff00000001 #134.35
+ adox rbp, r14 #130.34
+ seto r15b #130.34
+ xor eax, eax #130.34
+ add ecx, DWORD PTR [136+rsp] #131.34[spill]
+ cmp r8d, r15d #131.34
+ mulx r11, r15, r10 #133.35
+ adcx rcx, rbx #131.34
+ mov rbx, -1 #132.35
+ mulx r14, r13, rbx #132.35
+ mulx r10, r12, r12 #134.35
+ mov edx, r8d #135.34
+ setb al #131.34
+ adox edx, r8d #135.34
+ mov rdx, QWORD PTR [128+rsp] #145.35[spill]
+ adox r13, r11 #135.34
+ mov r11d, 0 #136.34
+ adox r15, r11 #136.34
+ adox r10, r11 #137.34
+ mov r11d, r8d #137.34
+ seto r11b #137.34
+ clc #138.31
+ adcx r11, r12 #138.31
+ mov r12d, r8d #139.31
+ adox r12d, r8d #139.31
+ adox rsi, r14 #139.31
+ mulx r12, rsi, QWORD PTR [152+rsp] #145.35[spill]
+ adox rdi, r13 #140.34
+ mov r13d, r8d #143.34
+ adox r9, r15 #141.34
+ mulx r14, r15, QWORD PTR [176+rsp] #146.35[spill]
+ adox rbp, r10 #142.34
+ adox rcx, r11 #143.34
+ seto r13b #143.34
+ clc #149.34
+ adcx rsi, r14 #149.34
+ mulx r10, r14, QWORD PTR [168+rsp] #147.35[spill]
+ adcx r15, r10 #150.34
+ mulx r11, r10, QWORD PTR [160+rsp] #148.35[spill]
+ mov edx, r8d #152.31
+ adcx r14, r11 #151.34
+ mov r11d, r8d #151.34
+ setb r11b #151.34
+ adox edx, r8d #152.31
+ adox r11, r10 #152.31
+ clc #153.34
+ adcx rdi, r12 #153.34
+ mov rdx, rdi #158.35
+ adcx r9, rsi #154.34
+ mov esi, r8d #156.34
+ adcx rbp, r15 #155.34
+ adcx rcx, r14 #156.34
+ mulx r14, r12, rbx #158.35
+ setb sil #156.34
+ xor r10d, r10d #156.34
+ add eax, r13d #157.34
+ cmp r8d, esi #157.34
+ mov rsi, 0xffffffff00000001 #160.35
+ mulx rsi, r13, rsi #160.35
+ adcx rax, r11 #157.34
+ mov r11, 0x0ffffffff #159.35
+ mulx r15, r11, r11 #159.35
+ mov edx, r8d #161.34
+ setb r10b #157.34
+ adox edx, r8d #161.34
+ mov edx, r8d #163.34
+ adox r12, r15 #161.34
+ mov r15d, 0 #162.34
+ adox r11, r15 #162.34
+ adox rsi, r15 #163.34
+ seto dl #163.34
+ clc #164.31
+ adcx rdx, r13 #164.31
+ mov r13d, r8d #165.31
+ adox r13d, r8d #165.31
+ adox rdi, r14 #165.31
+ mov r14, 0xffffffff00000001 #174.34
+ mov edi, r8d #169.34
+ adox r9, r12 #166.34
+ mov r12, 0x0ffffffff #172.34
+ adox rbp, r11 #167.34
+ adox rcx, rsi #168.34
+ mov r11, rcx #173.34
+ adox rax, rdx #169.34
+ mov rsi, rax #174.34
+ seto dil #169.34
+ add r10d, edi #175.31
+ mov rdi, r9 #171.34
+ sub rdi, rbx #171.34
+ mov rbx, rbp #172.34
+ sbb rbx, r12 #172.34
+ sbb r11, r15 #173.34
+ sbb rsi, r14 #174.34
+ mov r14d, r8d #174.34
+ setb r14b #174.34
+ cmp r8d, r14d #175.31
+ sbb r10, r15 #175.31
+ setb r8b #175.31
+ dec r8 #9.35
+ and rsi, r8 #10.31
+ and r11, r8 #10.31
+ and rbx, r8 #10.31
+ and rdi, r8 #10.31
+ not r8 #10.43
+ and rax, r8 #10.60
+ and rcx, r8 #10.60
+ and rbp, r8 #10.60
+ and r8, r9 #10.60
+ or rsi, rax #10.60
+ or r11, rcx #10.60
+ or rbx, rbp #10.60
+ or rdi, r8 #10.60
+ mov QWORD PTR [216+rsp], rsi #10.60[spill]
+ mov QWORD PTR [32+rsp], rsi #319.35
+ mov QWORD PTR [40+rsp], r11 #319.35
+ mov QWORD PTR [224+rsp], rdi #10.60[spill]
+ mov QWORD PTR [48+rsp], rbx #319.35
+ mov QWORD PTR [56+rsp], rdi #319.35
+ vmovups XMMWORD PTR [64+rsp], xmm0 #320.19
+ vmovups XMMWORD PTR [80+rsp], xmm0 #320.19
+ mov r8, QWORD PTR [112+rsp] #41.32[spill]
+ xor ebp, ebp #41.32
+ mov r14, QWORD PTR [rsp] #41.32
+ xor edi, edi #44.32
+ mov rsi, QWORD PTR [8+rsp] #42.32
+ xor r9d, r9d #48.32
+ sub r14, QWORD PTR [r8] #41.32
+ mov r12, 0xffffffff00000001 #49.30
+ mov rcx, QWORD PTR [16+rsp] #43.32
+ sbb rsi, QWORD PTR [8+r8] #42.32
+ mov r10, QWORD PTR [24+rsp] #44.32
+ vpxor xmm0, xmm0, xmm0 #323.20
+ sbb rcx, QWORD PTR [16+r8] #43.32
+ mov QWORD PTR [120+rsp], r11 #[spill]
+ sbb r10, QWORD PTR [24+r8] #44.32
+ setb dil #44.32
+ xor r13d, r13d #44.32
+ mov r11, -1 #44.32
+ xor r8d, r8d #44.32
+ xor edx, edx #44.32
+ test edi, edi #45.38
+ mov QWORD PTR [232+rsp], rbx #[spill]
+ cmovne rdx, r11 #45.38
+ clc #46.32
+ mov eax, edx #47.32
+ adcx r14, rdx #46.32
+ mov QWORD PTR [288+rsp], r14 #46.32[spill]
+ adcx rsi, rax #47.32
+ mov QWORD PTR [296+rsp], rsi #47.32[spill]
+ adcx rcx, r8 #48.32
+ mov QWORD PTR [80+rsp], rsi #320.33
+ setb r9b #48.32
+ and rdx, r12 #49.30
+ cmp ebp, r9d #49.30
+ mov QWORD PTR [88+rsp], r14 #320.33
+ adcx r10, rdx #49.30
+ mov rdx, QWORD PTR [152+rsp] #73.33[spill]
+ adox r13d, ebp #77.32
+ mulx rax, rbx, r10 #73.33
+ mulx r15, r9, rcx #74.33
+ adox rbx, r15 #77.32
+ mulx rdi, rsi, rsi #75.33
+ adox r9, rdi #78.32
+ mov edi, ebp #79.32
+ mov QWORD PTR [304+rsp], rcx #48.32[spill]
+ mov QWORD PTR [72+rsp], rcx #320.33
+ mulx r14, rcx, r14 #76.33
+ mov rdx, rax #81.33
+ adox rsi, r14 #79.32
+ mulx r14, r15, r11 #81.33
+ mov r11, 0x0ffffffff #82.33
+ seto dil #79.32
+ clc #80.30
+ adcx rdi, rcx #80.30
+ mov QWORD PTR [280+rsp], r10 #49.30[spill]
+ mulx r13, rcx, r11 #82.33
+ mov r11d, ebp #84.32
+ adox r11d, ebp #84.32
+ mulx r12, rdx, r12 #83.33
+ mov r11d, ebp #86.32
+ adox r15, r13 #84.32
+ mov QWORD PTR [64+rsp], r10 #320.33
+ adox rcx, r8 #85.32
+ adox r12, r8 #86.32
+ seto r11b #86.32
+ clc #87.30
+ adcx r11, rdx #87.30
+ mov rdx, QWORD PTR [176+rsp] #93.33[spill]
+ mov r13d, ebp #88.30
+ adox r13d, ebp #88.30
+ adox rax, r14 #88.30
+ mulx r14, r13, r10 #93.33
+ adox rbx, r15 #89.32
+ adox r9, rcx #90.32
+ mov ecx, ebp #92.32
+ adox rsi, r12 #91.32
+ mulx rax, r12, QWORD PTR [304+rsp] #94.33[spill]
+ adox rdi, r11 #92.32
+ seto cl #92.32
+ clc #97.32
+ adcx r13, rax #97.32
+ mulx rax, r15, QWORD PTR [296+rsp] #95.33[spill]
+ adcx r12, rax #98.32
+ mulx rax, r11, QWORD PTR [288+rsp] #96.33[spill]
+ mov edx, ebp #100.30
+ adcx r15, rax #99.32
+ mov eax, ebp #99.32
+ setb al #99.32
+ adox edx, ebp #100.30
+ adox rax, r11 #100.30
+ mov r11d, ebp #100.30
+ seto r11b #100.30
+ clc #101.34
+ adcx rbx, r14 #101.34
+ mov rdx, rbx #106.35
+ adcx r9, r13 #102.34
+ adcx rsi, r12 #103.34
+ mov r12d, ebp #105.34
+ adcx rdi, r15 #104.34
+ mov r15, -1 #106.35
+ mulx r15, r14, r15 #106.35
+ adcx rcx, rax #105.34
+ mov rax, 0x0ffffffff #107.35
+ mulx r11, r13, rax #107.35
+ setb r12b #105.34
+ mov DWORD PTR [128+rsp], r12d #105.34[spill]
+ mov r12, 0xffffffff00000001 #108.35
+ mulx rax, r12, r12 #108.35
+ mov edx, ebp #109.34
+ adox edx, ebp #109.34
+ mov rdx, QWORD PTR [168+rsp] #119.35[spill]
+ adox r14, r11 #109.34
+ mov r11d, ebp #111.34
+ adox r13, r8 #110.34
+ adox rax, r8 #111.34
+ seto r11b #111.34
+ clc #112.31
+ adcx r11, r12 #112.31
+ mov r12d, ebp #113.31
+ adox r12d, ebp #113.31
+ adox rbx, r15 #113.31
+ mulx rbx, r15, r10 #119.35
+ adox r9, r14 #114.34
+ mov r14d, ebp #117.34
+ adox rsi, r13 #115.34
+ adox rdi, rax #116.34
+ mulx rax, r13, QWORD PTR [304+rsp] #120.35[spill]
+ adox rcx, r11 #117.34
+ mulx r11, r12, QWORD PTR [296+rsp] #121.35[spill]
+ seto r14b #117.34
+ clc #123.34
+ adcx r15, rax #123.34
+ adcx r13, r11 #124.34
+ mulx r11, rax, QWORD PTR [288+rsp] #122.35[spill]
+ mov edx, ebp #126.31
+ adcx r12, r11 #125.34
+ mov r11d, ebp #125.34
+ setb r11b #125.34
+ adox edx, ebp #126.31
+ adox r11, rax #126.31
+ clc #127.34
+ mov eax, DWORD PTR [128+rsp] #131.34[spill]
+ adcx r9, rbx #127.34
+ mov ebx, ebp #130.34
+ mov rdx, r9 #132.35
+ adcx rsi, r15 #128.34
+ mov r15, 0x0ffffffff #133.35
+ adcx rdi, r13 #129.34
+ adcx rcx, r12 #130.34
+ setb bl #130.34
+ add eax, r14d #131.34
+ xor r14d, r14d #131.34
+ cmp ebp, ebx #131.34
+ adcx rax, r11 #131.34
+ mov r11, -1 #132.35
+ mulx r12, rbx, r11 #132.35
+ setb r14b #131.34
+ mov DWORD PTR [136+rsp], r14d #131.34[spill]
+ mov r14, 0xffffffff00000001 #134.35
+ mulx r15, r11, r15 #133.35
+ mulx r14, r13, r14 #134.35
+ mov edx, ebp #135.34
+ adox edx, ebp #135.34
+ mov rdx, QWORD PTR [160+rsp] #145.35[spill]
+ adox rbx, r15 #135.34
+ mov r15d, ebp #137.34
+ adox r11, r8 #136.34
+ adox r14, r8 #137.34
+ seto r15b #137.34
+ clc #138.31
+ adcx r15, r13 #138.31
+ mov r13d, ebp #139.31
+ adox r13d, ebp #139.31
+ mov r13d, ebp #152.31
+ adox r9, r12 #139.31
+ adox rsi, rbx #140.34
+ mulx r10, rbx, r10 #145.35
+ adox rdi, r11 #141.34
+ adox rcx, r14 #142.34
+ mov r14d, ebp #143.34
+ adox rax, r15 #143.34
+ mulx r9, r15, QWORD PTR [304+rsp] #146.35[spill]
+ seto r14b #143.34
+ clc #149.34
+ adcx rbx, r9 #149.34
+ mulx r11, r9, QWORD PTR [296+rsp] #147.35[spill]
+ adcx r15, r11 #150.34
+ mulx r12, r11, QWORD PTR [288+rsp] #148.35[spill]
+ adcx r9, r12 #151.34
+ mov r12d, ebp #151.34
+ setb r12b #151.34
+ adox r13d, ebp #152.31
+ adox r12, r11 #152.31
+ clc #153.34
+ mov r11d, DWORD PTR [136+rsp] #157.34[spill]
+ adcx rsi, r10 #153.34
+ mov r10d, ebp #156.34
+ mov rdx, rsi #158.35
+ adcx rdi, rbx #154.34
+ mov rbx, 0x0ffffffff #159.35
+ adcx rcx, r15 #155.34
+ mov r15, 0xffffffff00000001 #160.35
+ mulx r15, r13, r15 #160.35
+ adcx rax, r9 #156.34
+ setb r10b #156.34
+ mov r9, -1 #156.34
+ add r11d, r14d #157.34
+ cmp ebp, r10d #157.34
+ mulx r9, r10, r9 #158.35
+ adcx r11, r12 #157.34
+ mov r12d, ebp #157.34
+ mulx r14, rbx, rbx #159.35
+ mov edx, ebp #161.34
+ setb r12b #157.34
+ adox edx, ebp #161.34
+ mov rdx, 0x0ffffffff #172.34
+ adox r10, r14 #161.34
+ mov r14d, ebp #163.34
+ adox rbx, r8 #162.34
+ adox r15, r8 #163.34
+ seto r14b #163.34
+ clc #164.31
+ adcx r14, r13 #164.31
+ mov r13d, ebp #165.31
+ adox r13d, ebp #165.31
+ adox rsi, r9 #165.31
+ mov esi, ebp #169.34
+ adox rdi, r10 #166.34
+ mov r9, rdi #171.34
+ adox rcx, rbx #167.34
+ mov rbx, 0xffffffff00000001 #174.34
+ adox rax, r15 #168.34
+ adox r11, r14 #169.34
+ seto sil #169.34
+ mov r10, -1 #169.34
+ xor r15d, r15d #169.34
+ add r12d, esi #175.31
+ sub r9, r10 #171.34
+ mov r10, rcx #172.34
+ mov rsi, r11 #174.34
+ sbb r10, rdx #172.34
+ mov rdx, rax #173.34
+ sbb rdx, r8 #173.34
+ sbb rsi, rbx #174.34
+ mov rbx, QWORD PTR [104+rsp] #180.1[spill]
+ setb r15b #174.34
+ cmp ebp, r15d #175.31
+ sbb r12, r8 #175.31
+ setb bpl #175.31
+ dec rbp #9.35
+ and rsi, rbp #10.31
+ and rdx, rbp #10.31
+ and r10, rbp #10.31
+ and r9, rbp #10.31
+ not rbp #10.43
+ and r11, rbp #10.60
+ and rax, rbp #10.60
+ or rsi, r11 #10.60
+ and rcx, rbp #10.60
+ mov QWORD PTR [64+rbx], rsi #180.1
+ and rbp, rdi #10.60
+ mov rsi, QWORD PTR [96+rsp] #322.60[spill]
+ or rdx, rax #10.60
+ or r10, rcx #10.60
+ or r9, rbp #10.60
+ mov QWORD PTR [72+rbx], rdx #181.1
+ mov QWORD PTR [80+rbx], r10 #182.1
+ mov QWORD PTR [88+rbx], r9 #183.1
+ mov rax, QWORD PTR [32+rsi] #322.60
+ mov rdx, QWORD PTR [40+rsi] #322.53
+ mov rcx, QWORD PTR [48+rsi] #322.46
+ mov rdi, QWORD PTR [56+rsi] #322.39
+ mov QWORD PTR [272+rsp], rax #322.60[spill]
+ mov QWORD PTR [264+rsp], rdx #322.53[spill]
+ mov QWORD PTR [256+rsp], rcx #322.46[spill]
+ mov QWORD PTR [248+rsp], rdi #322.39[spill]
+ vmovups XMMWORD PTR [32+rsp], xmm0 #323.20
+ vmovups XMMWORD PTR [48+rsp], xmm0 #323.20
+ mov rbx, QWORD PTR [232+rsp] #323.20[spill]
+ mov r11, QWORD PTR [120+rsp] #323.20[spill]
+ mov rdx, QWORD PTR [216+rsp] #73.33[spill]
+ xor ecx, ecx #77.32
+ xor r12d, r12d #77.32
+ xor esi, esi #77.32
+ vpxor xmm0, xmm0, xmm0 #324.19
+ mov r9, rax #73.33
+ mov QWORD PTR [232+rsp], rbx #[spill]
+ mulx r15, r10, r9 #73.33
+ mulx r8, rbx, QWORD PTR [264+rsp] #74.33[spill]
+ adcx r10, r8 #77.32
+ mov r8d, 0 #79.32
+ mulx rbp, rdi, QWORD PTR [256+rsp] #75.33[spill]
+ adcx rbx, rbp #78.32
+ mulx rax, r14, QWORD PTR [248+rsp] #76.33[spill]
+ adcx rdi, rax #79.32
+ mov rbp, -1 #81.33
+ mov rdx, r15 #81.33
+ mov rax, 0xffffffff00000001 #83.33
+ setb sil #79.32
+ adox ecx, r8d #80.30
+ adox rsi, r14 #80.30
+ mulx rcx, rax, rax #83.33
+ seto r12b #80.30
+ mulx r12, r13, rbp #81.33
+ mov rbp, 0x0ffffffff #82.33
+ clc #84.32
+ mulx rbp, r14, rbp #82.33
+ mov edx, r8d #87.30
+ adcx r13, rbp #84.32
+ mov ebp, 0 #85.32
+ adcx r14, rbp #85.32
+ adcx rcx, rbp #86.32
+ mov ebp, r8d #86.32
+ setb bpl #86.32
+ adox edx, r8d #87.30
+ mov rdx, r11 #93.33
+ adox rbp, rax #87.30
+ mov r11d, r8d #97.32
+ clc #88.30
+ adcx r15, r12 #88.30
+ adcx r10, r13 #89.32
+ adcx rbx, r14 #90.32
+ mulx r14, r13, QWORD PTR [264+rsp] #94.33[spill]
+ adcx rdi, rcx #91.32
+ mulx r12, rcx, r9 #93.33
+ adcx rsi, rbp #92.32
+ mov ebp, r8d #92.32
+ mulx r9, r15, QWORD PTR [256+rsp] #95.33[spill]
+ setb bpl #92.32
+ adox r11d, r8d #97.32
+ mulx rdx, rax, QWORD PTR [248+rsp] #96.33[spill]
+ mov r11, 0x0ffffffff #107.35
+ adox rcx, r14 #97.32
+ mov r14d, r8d #99.32
+ adox r13, r9 #98.32
+ mov r9d, r8d #101.34
+ adox r15, rdx #99.32
+ seto r14b #99.32
+ clc #100.30
+ adcx r14, rax #100.30
+ adox r9d, r8d #101.34
+ mov eax, r8d #105.34
+ adox r10, r12 #101.34
+ mov rdx, r10 #106.35
+ adox rbx, rcx #102.34
+ mov rcx, -1 #106.35
+ mulx r9, r12, rcx #106.35
+ adox rdi, r13 #103.34
+ adox rsi, r15 #104.34
+ mov r15, 0xffffffff00000001 #108.35
+ mulx r15, rcx, r15 #108.35
+ adox rbp, r14 #105.34
+ mulx r13, r14, r11 #107.35
+ mov r11d, 0 #110.34
+ seto al #105.34
+ clc #109.34
+ mov rdx, QWORD PTR [232+rsp] #119.35[spill]
+ adcx r12, r13 #109.34
+ mov r13d, r8d #112.31
+ adcx r14, r11 #110.34
+ adcx r15, r11 #111.34
+ mov r11d, r8d #111.34
+ setb r11b #111.34
+ adox r13d, r8d #112.31
+ adox r11, rcx #112.31
+ mov ecx, r8d #112.31
+ seto cl #112.31
+ clc #113.31
+ adcx r10, r9 #113.31
+ mov r10d, r8d #117.34
+ adcx rbx, r12 #114.34
+ mulx r9, r12, QWORD PTR [272+rsp] #119.35[spill]
+ adcx rdi, r14 #115.34
+ adcx rsi, r15 #116.34
+ mov r15d, r8d #123.34
+ adcx rbp, r11 #117.34
+ mulx rcx, r11, QWORD PTR [264+rsp] #120.35[spill]
+ setb r10b #117.34
+ adox r15d, r8d #123.34
+ mov DWORD PTR [rsp], r10d #117.34[spill]
+ adox r12, rcx #123.34
+ mov ecx, r8d #125.34
+ mulx r10, r13, QWORD PTR [256+rsp] #121.35[spill]
+ adox r11, r10 #124.34
+ mov r10d, r8d #127.34
+ mulx rdx, r14, QWORD PTR [248+rsp] #122.35[spill]
+ adox r13, rdx #125.34
+ seto cl #125.34
+ clc #126.31
+ adcx rcx, r14 #126.31
+ adox r10d, r8d #127.34
+ mov r10, 0xffffffff00000001 #134.35
+ adox rbx, r9 #127.34
+ mov r9d, r8d #130.34
+ mov rdx, rbx #132.35
+ adox rdi, r12 #128.34
+ mulx r10, r15, r10 #134.35
+ adox rsi, r11 #129.34
+ adox rbp, r13 #130.34
+ mov r13, 0x0ffffffff #133.35
+ seto r9b #130.34
+ xor r14d, r14d #130.34
+ add eax, DWORD PTR [rsp] #131.34[spill]
+ cmp r8d, r9d #131.34
+ mulx r9, r13, r13 #133.35
+ adcx rax, rcx #131.34
+ mov rcx, -1 #132.35
+ mulx r12, r11, rcx #132.35
+ mov edx, r8d #135.34
+ setb r14b #131.34
+ adox edx, r8d #135.34
+ mov rdx, QWORD PTR [224+rsp] #145.35[spill]
+ adox r11, r9 #135.34
+ mov r9d, 0 #136.34
+ adox r13, r9 #136.34
+ adox r10, r9 #137.34
+ mov r9d, r8d #137.34
+ seto r9b #137.34
+ clc #138.31
+ adcx r9, r15 #138.31
+ mov r15d, r8d #139.31
+ adox r15d, r8d #139.31
+ adox rbx, r12 #139.31
+ adox rdi, r11 #140.34
+ mulx r11, rbx, QWORD PTR [264+rsp] #146.35[spill]
+ adox rsi, r13 #141.34
+ mov r13d, r8d #143.34
+ adox rbp, r10 #142.34
+ mulx r10, r12, QWORD PTR [272+rsp] #145.35[spill]
+ adox rax, r9 #143.34
+ seto r13b #143.34
+ clc #149.34
+ adcx r12, r11 #149.34
+ mulx r9, r11, QWORD PTR [256+rsp] #147.35[spill]
+ adcx rbx, r9 #150.34
+ mulx r9, r15, QWORD PTR [248+rsp] #148.35[spill]
+ mov edx, r8d #152.31
+ adcx r11, r9 #151.34
+ mov r9d, r8d #151.34
+ setb r9b #151.34
+ adox edx, r8d #152.31
+ adox r9, r15 #152.31
+ clc #153.34
+ mov r15, 0xffffffff00000001 #160.35
+ adcx rdi, r10 #153.34
+ mov r10, 0x0ffffffff #159.35
+ mov rdx, rdi #158.35
+ adcx rsi, r12 #154.34
+ adcx rbp, rbx #155.34
+ mov ebx, r8d #156.34
+ adcx rax, r11 #156.34
+ mulx r11, r12, rcx #158.35
+ setb bl #156.34
+ add r14d, r13d #157.34
+ cmp r8d, ebx #157.34
+ mulx r10, r13, r10 #159.35
+ adcx r14, r9 #157.34
+ mov r9d, r8d #157.34
+ mulx r15, rbx, r15 #160.35
+ mov edx, r8d #161.34
+ setb r9b #157.34
+ adox edx, r8d #161.34
+ mov edx, r8d #163.34
+ adox r12, r10 #161.34
+ mov r10d, 0 #162.34
+ adox r13, r10 #162.34
+ adox r15, r10 #163.34
+ seto dl #163.34
+ clc #164.31
+ adcx rdx, rbx #164.31
+ mov ebx, r8d #165.31
+ adox ebx, r8d #165.31
+ adox rdi, r11 #165.31
+ mov r11, 0x0ffffffff #172.34
+ mov edi, r8d #169.34
+ adox rsi, r12 #166.34
+ mov r12, 0xffffffff00000001 #174.34
+ adox rbp, r13 #167.34
+ adox rax, r15 #168.34
+ mov rbx, rax #173.34
+ adox r14, rdx #169.34
+ mov rdx, r14 #174.34
+ seto dil #169.34
+ xor r13d, r13d #169.34
+ add r9d, edi #175.31
+ mov rdi, rsi #171.34
+ sub rdi, rcx #171.34
+ mov rcx, rbp #172.34
+ sbb rcx, r11 #172.34
+ sbb rbx, r10 #173.34
+ sbb rdx, r12 #174.34
+ setb r13b #174.34
+ cmp r8d, r13d #175.31
+ sbb r9, r10 #175.31
+ setb r8b #175.31
+ dec r8 #9.35
+ and rdx, r8 #10.31
+ and rbx, r8 #10.31
+ and rcx, r8 #10.31
+ and rdi, r8 #10.31
+ not r8 #10.43
+ and r14, r8 #10.60
+ and rax, r8 #10.60
+ and rbp, r8 #10.60
+ and r8, rsi #10.60
+ or rdx, r14 #10.60
+ or rbx, rax #10.60
+ or rcx, rbp #10.60
+ or rdi, r8 #10.60
+ mov QWORD PTR [120+rsp], rdx #10.60[spill]
+ mov QWORD PTR [32+rsp], rdx #323.34
+ mov QWORD PTR [136+rsp], rbx #10.60[spill]
+ mov QWORD PTR [40+rsp], rbx #323.34
+ mov QWORD PTR [128+rsp], rcx #10.60[spill]
+ mov QWORD PTR [144+rsp], rdi #10.60[spill]
+ mov QWORD PTR [48+rsp], rcx #323.34
+ mov QWORD PTR [56+rsp], rdi #323.34
+ vmovups XMMWORD PTR [64+rsp], xmm0 #324.19
+ vmovups XMMWORD PTR [80+rsp], xmm0 #324.19
+ mov r12, rdi #44.32
+ mov rsi, rcx #43.32
+ mov rax, QWORD PTR [112+rsp] #41.32[spill]
+ xor r11d, r11d #41.32
+ mov rcx, rdx #41.32
+ xor edx, edx #44.32
+ mov rdi, rbx #42.32
+ xor ebp, ebp #45.38
+ sub rcx, QWORD PTR [32+rax] #41.32
+ sbb rdi, QWORD PTR [40+rax] #42.32
+ mov r10, 0xffffffff00000001 #49.30
+ sbb rsi, QWORD PTR [48+rax] #43.32
+ vpxor xmm0, xmm0, xmm0 #325.20
+ sbb r12, QWORD PTR [56+rax] #44.32
+ setb dl #44.32
+ mov r8, -1 #44.32
+ xor r9d, r9d #44.32
+ test edx, edx #45.38
+ cmove r8, rbp #45.38
+ clc #46.32
+ mov ebx, r8d #47.32
+ adcx rcx, r8 #46.32
+ mov QWORD PTR [120+rsp], rcx #46.32[spill]
+ adcx rdi, rbx #47.32
+ mov QWORD PTR [88+rsp], rcx #324.33
+ adcx rsi, rbp #48.32
+ mov QWORD PTR [136+rsp], rdi #47.32[spill]
+ setb r9b #48.32
+ and r10, r8 #49.30
+ cmp r11d, r9d #49.30
+ mov QWORD PTR [128+rsp], rsi #48.32[spill]
+ adcx r12, r10 #49.30
+ mov QWORD PTR [72+rsp], rsi #324.33
+ mov QWORD PTR [80+rsp], rdi #324.33
+ mov QWORD PTR [144+rsp], r12 #49.30[spill]
+ mov QWORD PTR [64+rsp], r12 #324.33
+ vmovups XMMWORD PTR [rsp], xmm0 #325.20
+ vmovups XMMWORD PTR [16+rsp], xmm0 #325.20
+ mov rsi, QWORD PTR [280+rsp] #188.33[spill]
+ mov rdx, rsi #188.33
+ mov rdi, QWORD PTR [304+rsp] #189.33[spill]
+ xor r9d, r9d #192.32
+ mov r15, -1 #192.32
+ xor r12d, r12d #192.32
+ mulx rbx, r8, rsi #188.33
+ mulx rbp, r11, rdi #189.33
+ adox r8, rbp #192.32
+ vpxor xmm0, xmm0, xmm0 #326.20
+ mulx rax, r10, QWORD PTR [296+rsp] #190.33[spill]
+ adox r11, rax #193.32
+ mulx r13, r14, QWORD PTR [288+rsp] #191.33[spill]
+ mov rdx, rbx #196.33
+ adox r10, r13 #194.32
+ mov r13, 0x0ffffffff #197.33
+ mulx rbp, rax, r15 #196.33
+ seto r12b #194.32
+ clc #195.30
+ adcx r12, r14 #195.30
+ mov r14, 0xffffffff00000001 #198.33
+ mulx r14, r15, r14 #198.33
+ mulx r13, rcx, r13 #197.33
+ mov edx, r9d #199.32
+ adox edx, r9d #199.32
+ mov edx, r9d #201.32
+ adox rax, r13 #199.32
+ mov r13d, 0 #200.32
+ adox rcx, r13 #200.32
+ adox r14, r13 #201.32
+ seto dl #201.32
+ clc #202.30
+ adcx rdx, r15 #202.30
+ mov r15d, r9d #203.30
+ adox r15d, r9d #203.30
+ adox rbx, rbp #203.30
+ mov ebp, r9d #207.32
+ adox r8, rax #204.32
+ adox r11, rcx #205.32
+ adox r10, r14 #206.32
+ adox r12, rdx #207.32
+ mov rdx, rdi #208.33
+ mulx rsi, r14, rsi #208.33
+ seto bpl #207.32
+ clc #212.32
+ mulx rbx, rax, rdi #209.33
+ adcx r14, rbx #212.32
+ mov rbx, QWORD PTR [296+rsp] #210.33[spill]
+ mulx r15, rcx, rbx #210.33
+ adcx rax, r15 #213.32
+ mulx rdi, r15, QWORD PTR [288+rsp] #211.33[spill]
+ mov edx, r9d #215.30
+ adcx rcx, rdi #214.32
+ mov edi, r9d #214.32
+ setb dil #214.32
+ adox edx, r9d #215.30
+ adox rdi, r15 #215.30
+ mov r15d, r9d #215.30
+ seto r15b #215.30
+ clc #216.34
+ adcx r8, rsi #216.34
+ mov esi, r9d #220.34
+ mov rdx, r8 #221.35
+ adcx r11, r14 #217.34
+ mov r14, 0xffffffff00000001 #223.35
+ adcx r10, rax #218.34
+ mov rax, -1 #221.35
+ adcx r12, rcx #219.34
+ adcx rbp, rdi #220.34
+ mulx r15, rdi, rax #221.35
+ mov rax, 0x0ffffffff #222.35
+ setb sil #220.34
+ mov DWORD PTR [64+rsp], esi #220.34[spill]
+ mulx rcx, rax, rax #222.35
+ mulx r14, rsi, r14 #223.35
+ mov edx, r9d #224.34
+ adox edx, r9d #224.34
+ mov rdx, rbx #234.35
+ adox rdi, rcx #224.34
+ mov ecx, r9d #226.34
+ adox rax, r13 #225.34
+ adox r14, r13 #226.34
+ seto cl #226.34
+ clc #227.31
+ adcx rcx, rsi #227.31
+ mov esi, r9d #228.31
+ adox esi, r9d #228.31
+ adox r8, r15 #228.31
+ mov r15d, r9d #232.34
+ adox r11, rdi #229.34
+ adox r10, rax #230.34
+ mulx r8, rax, QWORD PTR [280+rsp] #234.35[spill]
+ adox r12, r14 #231.34
+ mulx r14, rdi, QWORD PTR [304+rsp] #235.35[spill]
+ adox rbp, rcx #232.34
+ mulx rcx, rsi, rbx #236.35
+ seto r15b #232.34
+ clc #238.34
+ adcx rax, r14 #238.34
+ adcx rdi, rcx #239.34
+ mov rcx, QWORD PTR [288+rsp] #237.35[spill]
+ mulx r14, rbx, rcx #237.35
+ mov edx, r9d #241.31
+ adcx rsi, r14 #240.34
+ mov r14d, r9d #240.34
+ setb r14b #240.34
+ adox edx, r9d #241.31
+ adox r14, rbx #241.31
+ clc #242.34
+ adcx r11, r8 #242.34
+ mov r8d, r9d #245.34
+ mov rdx, r11 #247.35
+ adcx r10, rax #243.34
+ mov eax, DWORD PTR [64+rsp] #246.34[spill]
+ adcx r12, rdi #244.34
+ mov rdi, 0x0ffffffff #248.35
+ adcx rbp, rsi #245.34
+ setb r8b #245.34
+ xor ebx, ebx #245.34
+ add eax, r15d #246.34
+ cmp r9d, r8d #246.34
+ mov r15, 0xffffffff00000001 #249.35
+ mulx r15, rsi, r15 #249.35
+ adcx rax, r14 #246.34
+ mov r14, -1 #247.35
+ setb bl #246.34
+ mov DWORD PTR [72+rsp], ebx #246.34[spill]
+ mulx r8, rbx, r14 #247.35
+ mulx rdi, r14, rdi #248.35
+ mov edx, r9d #250.34
+ adox edx, r9d #250.34
+ mov rdx, rcx #260.35
+ adox rbx, rdi #250.34
+ mov edi, r9d #252.34
+ adox r14, r13 #251.34
+ adox r15, r13 #252.34
+ seto dil #252.34
+ clc #253.31
+ adcx rdi, rsi #253.31
+ mov esi, r9d #254.31
+ adox esi, r9d #254.31
+ adox r11, r8 #254.31
+ mulx r11, rsi, QWORD PTR [304+rsp] #261.35[spill]
+ adox r10, rbx #255.34
+ adox r12, r14 #256.34
+ mov r14d, r9d #266.34
+ adox rbp, r15 #257.34
+ mov r15d, r9d #258.34
+ adox rax, rdi #258.34
+ mulx r8, rdi, QWORD PTR [280+rsp] #260.35[spill]
+ seto r15b #258.34
+ clc #264.34
+ adcx rdi, r11 #264.34
+ mulx rbx, r11, QWORD PTR [296+rsp] #262.35[spill]
+ adcx rsi, rbx #265.34
+ mulx rcx, rbx, rcx #263.35
+ adcx r11, rcx #266.34
+ mov ecx, r9d #267.31
+ setb r14b #266.34
+ adox ecx, r9d #267.31
+ adox r14, rbx #267.31
+ clc #268.34
+ mov ebx, DWORD PTR [72+rsp] #272.34[spill]
+ adcx r10, r8 #268.34
+ mov r8d, r9d #271.34
+ mov rdx, r10 #273.35
+ adcx r12, rdi #269.34
+ mov rdi, 0xffffffff00000001 #275.35
+ adcx rbp, rsi #270.34
+ mulx rdi, rsi, rdi #275.35
+ adcx rax, r11 #271.34
+ mov r11, -1 #273.35
+ mulx rcx, r11, r11 #273.35
+ setb r8b #271.34
+ add ebx, r15d #272.34
+ cmp r9d, r8d #272.34
+ mov r8, 0x0ffffffff #274.35
+ mulx r15, r8, r8 #274.35
+ mov edx, r9d #276.34
+ adcx rbx, r14 #272.34
+ mov r14d, r9d #272.34
+ setb r14b #272.34
+ adox edx, r9d #276.34
+ adox r11, r15 #276.34
+ mov r15d, r9d #278.34
+ adox r8, r13 #277.34
+ adox rdi, r13 #278.34
+ seto r15b #278.34
+ clc #279.31
+ adcx r15, rsi #279.31
+ mov esi, r9d #280.31
+ adox esi, r9d #280.31
+ adox r10, rcx #280.31
+ mov rcx, 0x0ffffffff #287.34
+ mov r10d, r9d #284.34
+ adox r12, r11 #281.34
+ mov rdx, r12 #286.34
+ adox rbp, r8 #282.34
+ adox rax, rdi #283.34
+ mov rdi, 0xffffffff00000001 #289.34
+ adox rbx, r15 #284.34
+ mov r15, rax #288.34
+ mov r11, rbx #289.34
+ seto r10b #284.34
+ xor r8d, r8d #284.34
+ add r14d, r10d #290.31
+ mov r10, -1 #286.34
+ sub rdx, r10 #286.34
+ mov r10, rbp #287.34
+ sbb r10, rcx #287.34
+ sbb r15, r13 #288.34
+ sbb r11, rdi #289.34
+ setb r8b #289.34
+ cmp r9d, r8d #290.31
+ sbb r14, r13 #290.31
+ setb r9b #290.31
+ dec r9 #9.35
+ and r11, r9 #10.31
+ and r15, r9 #10.31
+ and r10, r9 #10.31
+ and rdx, r9 #10.31
+ not r9 #10.43
+ and rbx, r9 #10.60
+ and rax, r9 #10.60
+ and rbp, r9 #10.60
+ and r9, r12 #10.60
+ or r11, rbx #10.60
+ or r15, rax #10.60
+ or r10, rbp #10.60
+ or rdx, r9 #10.60
+ mov QWORD PTR [376+rsp], r11 #10.60[spill]
+ mov QWORD PTR [rsp], r11 #325.37
+ mov QWORD PTR [400+rsp], r15 #10.60[spill]
+ mov QWORD PTR [8+rsp], r15 #325.37
+ mov QWORD PTR [392+rsp], r10 #10.60[spill]
+ mov QWORD PTR [384+rsp], rdx #10.60[spill]
+ mov QWORD PTR [16+rsp], r10 #325.37
+ mov QWORD PTR [24+rsp], rdx #325.37
+ vmovups XMMWORD PTR [32+rsp], xmm0 #326.20
+ vmovups XMMWORD PTR [48+rsp], xmm0 #326.20
+ mov r12, QWORD PTR [144+rsp] #188.33[spill]
+ mov rdx, r12 #188.33
+ mov r13, QWORD PTR [128+rsp] #189.33[spill]
+ xor r9d, r9d #192.32
+ xor ebx, ebx #192.32
+ xor r10d, r10d #192.32
+ mulx r15, r14, r12 #188.33
+ mulx r11, rdi, r13 #189.33
+ adcx r14, r11 #192.32
+ mov r11, -1 #196.33
+ vpxor xmm0, xmm0, xmm0 #327.21
+ mulx rbp, r8, QWORD PTR [136+rsp] #190.33[spill]
+ adcx rdi, rbp #193.32
+ mov rbp, 0xffffffff00000001 #198.33
+ mulx rsi, rcx, QWORD PTR [120+rsp] #191.33[spill]
+ mov rdx, r15 #196.33
+ adcx r8, rsi #194.32
+ mulx rsi, rbp, rbp #198.33
+ setb r10b #194.32
+ adox ebx, r9d #195.30
+ adox r10, rcx #195.30
+ mulx rcx, rax, r11 #196.33
+ mov r11, 0x0ffffffff #197.33
+ clc #199.32
+ mulx r11, rbx, r11 #197.33
+ mov edx, r9d #202.30
+ adcx rax, r11 #199.32
+ mov r11d, 0 #200.32
+ adcx rbx, r11 #200.32
+ adcx rsi, r11 #201.32
+ mov r11d, r9d #201.32
+ setb r11b #201.32
+ adox edx, r9d #202.30
+ mov rdx, r13 #208.33
+ adox r11, rbp #202.30
+ clc #203.30
+ adcx r15, rcx #203.30
+ mulx rcx, r15, QWORD PTR [136+rsp] #210.33[spill]
+ adcx r14, rax #204.32
+ adcx rdi, rbx #205.32
+ adcx r8, rsi #206.32
+ mulx rax, rsi, r12 #208.33
+ adcx r10, r11 #207.32
+ mov r11d, r9d #207.32
+ mulx rbx, r12, r13 #209.33
+ mov r13d, r9d #212.32
+ setb r11b #207.32
+ adox r13d, r9d #212.32
+ mulx rdx, rbp, QWORD PTR [120+rsp] #211.33[spill]
+ mov r13, 0x0ffffffff #222.35
+ adox rsi, rbx #212.32
+ mov ebx, r9d #214.32
+ adox r12, rcx #213.32
+ mov ecx, r9d #216.34
+ adox r15, rdx #214.32
+ seto bl #214.32
+ clc #215.30
+ adcx rbx, rbp #215.30
+ adox ecx, r9d #216.34
+ mov ebp, r9d #220.34
+ adox r14, rax #216.34
+ mov rdx, r14 #221.35
+ adox rdi, rsi #217.34
+ mov rsi, -1 #221.35
+ mulx rcx, rax, rsi #221.35
+ adox r8, r12 #218.34
+ adox r10, r15 #219.34
+ mov r15, 0xffffffff00000001 #223.35
+ mulx rsi, r15, r15 #223.35
+ adox r11, rbx #220.34
+ mulx r12, rbx, r13 #222.35
+ mov r13d, 0 #225.34
+ seto bpl #220.34
+ clc #224.34
+ mov rdx, QWORD PTR [136+rsp] #234.35[spill]
+ adcx rax, r12 #224.34
+ mov r12d, r9d #227.31
+ adcx rbx, r13 #225.34
+ adcx rsi, r13 #226.34
+ mov r13d, r9d #226.34
+ setb r13b #226.34
+ adox r12d, r9d #227.31
+ adox r13, r15 #227.31
+ mov r15d, r9d #238.34
+ clc #228.31
+ adcx r14, rcx #228.31
+ mov r14d, r9d #232.34
+ adcx rdi, rax #229.34
+ mulx rcx, r12, rdx #236.35
+ adcx r8, rbx #230.34
+ adcx r10, rsi #231.34
+ adcx r11, r13 #232.34
+ mulx rax, r13, QWORD PTR [144+rsp] #234.35[spill]
+ setb r14b #232.34
+ adox r15d, r9d #238.34
+ mov DWORD PTR [216+rsp], r14d #232.34[spill]
+ mulx rsi, r14, QWORD PTR [128+rsp] #235.35[spill]
+ adox r13, rsi #238.34
+ mov esi, r9d #240.34
+ mulx rdx, rbx, QWORD PTR [120+rsp] #237.35[spill]
+ adox r14, rcx #239.34
+ mov ecx, r9d #242.34
+ adox r12, rdx #240.34
+ seto sil #240.34
+ clc #241.31
+ adcx rsi, rbx #241.31
+ adox ecx, r9d #242.34
+ adox rdi, rax #242.34
+ mov eax, r9d #245.34
+ mov rdx, rdi #247.35
+ adox r8, r13 #243.34
+ mov r13, 0x0ffffffff #248.35
+ adox r10, r14 #244.34
+ mov r14, 0xffffffff00000001 #249.35
+ adox r11, r12 #245.34
+ mulx r14, r12, r14 #249.35
+ seto al #245.34
+ xor ebx, ebx #245.34
+ add ebp, DWORD PTR [216+rsp] #246.34[spill]
+ cmp r9d, eax #246.34
+ mulx r13, rax, r13 #248.35
+ adcx rbp, rsi #246.34
+ mov rsi, -1 #247.35
+ mulx rcx, r15, rsi #247.35
+ mov edx, r9d #250.34
+ setb bl #246.34
+ adox edx, r9d #250.34
+ mov rdx, QWORD PTR [120+rsp] #260.35[spill]
+ adox r15, r13 #250.34
+ mov r13d, 0 #251.34
+ adox rax, r13 #251.34
+ adox r14, r13 #252.34
+ mov r13d, r9d #252.34
+ seto r13b #252.34
+ clc #253.31
+ adcx r13, r12 #253.31
+ mov r12d, r9d #254.31
+ adox r12d, r9d #254.31
+ adox rdi, rcx #254.31
+ mov ecx, r9d #258.34
+ mulx rdi, r12, QWORD PTR [128+rsp] #261.35[spill]
+ adox r8, r15 #255.34
+ adox r10, rax #256.34
+ adox r11, r14 #257.34
+ adox rbp, r13 #258.34
+ mulx r13, r15, QWORD PTR [144+rsp] #260.35[spill]
+ seto cl #258.34
+ clc #264.34
+ adcx r15, rdi #264.34
+ mulx rdi, r14, QWORD PTR [136+rsp] #262.35[spill]
+ adcx r12, rdi #265.34
+ mulx rdi, rax, rdx #263.35
+ mov edx, r9d #267.31
+ adcx r14, rdi #266.34
+ mov edi, r9d #266.34
+ setb dil #266.34
+ adox edx, r9d #267.31
+ adox rdi, rax #267.31
+ clc #268.34
+ adcx r8, r13 #268.34
+ mov r13d, r9d #271.34
+ mov rdx, r8 #273.35
+ adcx r10, r15 #269.34
+ mov r15, 0xffffffff00000001 #275.35
+ adcx r11, r12 #270.34
+ adcx rbp, r14 #271.34
+ setb r13b #271.34
+ xor eax, eax #271.34
+ add ebx, ecx #272.34
+ cmp r9d, r13d #272.34
+ mov rcx, 0x0ffffffff #274.35
+ mulx r14, r13, rsi #273.35
+ adcx rbx, rdi #272.34
+ mulx rcx, r12, rcx #274.35
+ mulx rdi, r15, r15 #275.35
+ mov edx, r9d #276.34
+ setb al #272.34
+ adox edx, r9d #276.34
+ mov edx, r9d #278.34
+ adox r13, rcx #276.34
+ mov ecx, 0 #277.34
+ adox r12, rcx #277.34
+ adox rdi, rcx #278.34
+ seto dl #278.34
+ clc #279.31
+ adcx rdx, r15 #279.31
+ mov r15d, r9d #280.31
+ adox r15d, r9d #280.31
+ adox r8, r14 #280.31
+ mov r8d, r9d #284.34
+ adox r10, r13 #281.34
+ adox r11, r12 #282.34
+ adox rbp, rdi #283.34
+ mov rdi, r10 #286.34
+ adox rbx, rdx #284.34
+ mov rdx, 0x0ffffffff #287.34
+ mov r13, rbx #289.34
+ seto r8b #284.34
+ xor r12d, r12d #284.34
+ add eax, r8d #290.31
+ sub rdi, rsi #286.34
+ mov rsi, r11 #287.34
+ mov r8, 0xffffffff00000001 #289.34
+ sbb rsi, rdx #287.34
+ mov rdx, rbp #288.34
+ sbb rdx, rcx #288.34
+ sbb r13, r8 #289.34
+ setb r12b #289.34
+ cmp r9d, r12d #290.31
+ sbb rax, rcx #290.31
+ setb r9b #290.31
+ dec r9 #9.35
+ and r13, r9 #10.31
+ and rdx, r9 #10.31
+ and rsi, r9 #10.31
+ and rdi, r9 #10.31
+ not r9 #10.43
+ and rbx, r9 #10.60
+ and rbp, r9 #10.60
+ and r11, r9 #10.60
+ and r9, r10 #10.60
+ or r13, rbx #10.60
+ or rdx, rbp #10.60
+ or rsi, r11 #10.60
+ or rdi, r9 #10.60
+ mov QWORD PTR [312+rsp], r13 #10.60[spill]
+ mov QWORD PTR [32+rsp], r13 #326.37
+ mov QWORD PTR [40+rsp], rdx #326.37
+ mov QWORD PTR [48+rsp], rsi #326.37
+ mov QWORD PTR [56+rsp], rdi #326.37
+ vmovups XMMWORD PTR [64+rsp], xmm0 #327.21
+ vmovups XMMWORD PTR [80+rsp], xmm0 #327.21
+ mov r8, QWORD PTR [192+rsp] #14.23[spill]
+ mov rax, QWORD PTR [256+rsp] #14.23[spill]
+ vpxor xmm0, xmm0, xmm0 #336.21
+ mov QWORD PTR [352+rsp], rdi #[spill]
+ mov rdi, QWORD PTR [168+rsp] #14.23[spill]
+ or r8, QWORD PTR [184+rsp] #14.23[spill]
+ or rax, QWORD PTR [248+rsp] #14.23[spill]
+ mov QWORD PTR [360+rsp], rsi #[spill]
+ mov rsi, QWORD PTR [200+rsp] #15.23[spill]
+ mov r15, QWORD PTR [264+rsp] #15.23[spill]
+ or rsi, r8 #15.23
+ or rdi, QWORD PTR [160+rsp] #14.23[spill]
+ or r15, rax #15.23
+ or QWORD PTR [176+rsp], rdi #15.23[spill]
+ or QWORD PTR [208+rsp], rsi #16.23[spill]
+ or QWORD PTR [272+rsp], r15 #16.23[spill]
+ xor r8d, r8d #77.32
+ xor esi, esi #77.32
+ xor r15d, r15d #77.32
+ xor r13d, r13d #77.32
+ mov QWORD PTR [368+rsp], rdx #[spill]
+ mov r13, 0x0ffffffff #82.33
+ mov rdx, QWORD PTR [376+rsp] #73.33[spill]
+ mov r9, QWORD PTR [280+rsp] #73.33[spill]
+ mov r10, QWORD PTR [304+rsp] #74.33[spill]
+ mulx r12, r11, r9 #73.33
+ mulx rcx, rbx, r10 #74.33
+ adcx r11, rcx #77.32
+ mulx rdi, rbp, QWORD PTR [296+rsp] #75.33[spill]
+ adcx rbx, rdi #78.32
+ mov edi, 0 #79.32
+ mulx r14, rax, QWORD PTR [288+rsp] #76.33[spill]
+ adcx rbp, r14 #79.32
+ mov rdx, r12 #81.33
+ setb r8b #79.32
+ adox esi, edi #80.30
+ mov rsi, -1 #81.33
+ adox r8, rax #80.30
+ mov rax, 0xffffffff00000001 #83.33
+ mulx rcx, r14, rsi #81.33
+ seto r15b #80.30
+ clc #84.32
+ mulx rsi, r13, r13 #82.33
+ adcx r14, rsi #84.32
+ mov esi, 0 #85.32
+ mulx r15, rax, rax #83.33
+ mov edx, edi #87.30
+ adcx r13, rsi #85.32
+ adcx r15, rsi #86.32
+ mov esi, edi #86.32
+ setb sil #86.32
+ adox edx, edi #87.30
+ adox rsi, rax #87.30
+ mov rdx, QWORD PTR [400+rsp] #93.33[spill]
+ clc #88.30
+ adcx r12, rcx #88.30
+ adcx r11, r14 #89.32
+ mulx r14, r12, r9 #93.33
+ adcx rbx, r13 #90.32
+ mulx r13, r9, QWORD PTR [296+rsp] #95.33[spill]
+ adcx rbp, r15 #91.32
+ mulx r15, rcx, r10 #94.33
+ mov r10d, edi #97.32
+ adcx r8, rsi #92.32
+ mov esi, edi #92.32
+ mulx rdx, rax, QWORD PTR [288+rsp] #96.33[spill]
+ setb sil #92.32
+ adox r10d, edi #97.32
+ mov r10, 0x0ffffffff #107.35
+ adox r12, r15 #97.32
+ mov r15d, edi #99.32
+ adox rcx, r13 #98.32
+ mov r13d, edi #101.34
+ adox r9, rdx #99.32
+ seto r15b #99.32
+ clc #100.30
+ adcx r15, rax #100.30
+ adox r13d, edi #101.34
+ mov eax, edi #105.34
+ adox r11, r14 #101.34
+ mov r14, 0xffffffff00000001 #108.35
+ mov rdx, r11 #106.35
+ adox rbx, r12 #102.34
+ adox rbp, rcx #103.34
+ mov rcx, -1 #106.35
+ adox r8, r9 #104.34
+ mulx r13, r9, rcx #106.35
+ adox rsi, r15 #105.34
+ mulx r12, r15, r10 #107.35
+ mov r10d, 0 #110.34
+ seto al #105.34
+ clc #109.34
+ adcx r9, r12 #109.34
+ mulx r12, rcx, r14 #108.35
+ mov r14d, edi #112.31
+ adcx r15, r10 #110.34
+ mov rdx, QWORD PTR [392+rsp] #119.35[spill]
+ adcx r12, r10 #111.34
+ mov r10d, edi #111.34
+ setb r10b #111.34
+ adox r14d, edi #112.31
+ adox r10, rcx #112.31
+ clc #113.31
+ adcx r11, r13 #113.31
+ mulx r13, r11, QWORD PTR [296+rsp] #121.35[spill]
+ adcx rbx, r9 #114.34
+ mov r9d, edi #117.34
+ adcx rbp, r15 #115.34
+ mulx r15, r14, QWORD PTR [304+rsp] #120.35[spill]
+ adcx r8, r12 #116.34
+ mov r12d, edi #123.34
+ adcx rsi, r10 #117.34
+ setb r9b #117.34
+ adox r12d, edi #123.34
+ mov DWORD PTR [408+rsp], r9d #117.34[spill]
+ mulx r9, r10, QWORD PTR [280+rsp] #119.35[spill]
+ adox r10, r15 #123.34
+ mov r15d, edi #125.34
+ mulx rdx, rcx, QWORD PTR [288+rsp] #122.35[spill]
+ adox r14, r13 #124.34
+ mov r13d, edi #126.31
+ adox r11, rdx #125.34
+ seto r15b #125.34
+ clc #126.31
+ adcx r15, rcx #126.31
+ mov ecx, edi #127.34
+ setb r13b #126.31
+ adox ecx, edi #127.34
+ mov rcx, -1 #132.35
+ adox rbx, r9 #127.34
+ mov r9, 0x0ffffffff #133.35
+ mov rdx, rbx #132.35
+ adox rbp, r10 #128.34
+ mulx r13, r12, rcx #132.35
+ adox r8, r14 #129.34
+ mulx r10, r14, r9 #133.35
+ adox rsi, r11 #130.34
+ mov r11d, edi #130.34
+ seto r11b #130.34
+ add eax, DWORD PTR [408+rsp] #131.34[spill]
+ cmp edi, r11d #131.34
+ mov r11, 0xffffffff00000001 #134.35
+ adcx rax, r15 #131.34
+ mov r15d, edi #131.34
+ mulx r9, r11, r11 #134.35
+ mov edx, edi #135.34
+ setb r15b #131.34
+ adox edx, edi #135.34
+ mov rdx, QWORD PTR [384+rsp] #145.35[spill]
+ adox r12, r10 #135.34
+ mov r10d, 0 #136.34
+ adox r14, r10 #136.34
+ adox r9, r10 #137.34
+ mov r10d, edi #137.34
+ seto r10b #137.34
+ clc #138.31
+ adcx r10, r11 #138.31
+ mov r11d, edi #139.31
+ adox r11d, edi #139.31
+ adox rbx, r13 #139.31
+ mov r13d, edi #143.34
+ adox rbp, r12 #140.34
+ mulx rbx, r12, QWORD PTR [280+rsp] #145.35[spill]
+ adox r8, r14 #141.34
+ adox rsi, r9 #142.34
+ mulx r14, r9, QWORD PTR [304+rsp] #146.35[spill]
+ adox rax, r10 #143.34
+ mulx r10, r11, QWORD PTR [296+rsp] #147.35[spill]
+ seto r13b #143.34
+ clc #149.34
+ adcx r12, r14 #149.34
+ adcx r9, r10 #150.34
+ mulx r10, r14, QWORD PTR [288+rsp] #148.35[spill]
+ mov edx, edi #152.31
+ adcx r11, r10 #151.34
+ mov r10d, edi #151.34
+ setb r10b #151.34
+ adox edx, edi #152.31
+ adox r10, r14 #152.31
+ clc #153.34
+ adcx rbp, rbx #153.34
+ mov ebx, edi #156.34
+ mov rdx, rbp #158.35
+ adcx r8, r12 #154.34
+ adcx rsi, r9 #155.34
+ mov r9, 0x0ffffffff #159.35
+ adcx rax, r11 #156.34
+ mulx r9, r11, r9 #159.35
+ setb bl #156.34
+ add r15d, r13d #157.34
+ cmp edi, ebx #157.34
+ mov rbx, 0xffffffff00000001 #160.35
+ mulx r13, r14, rcx #158.35
+ adcx r15, r10 #157.34
+ mov r10d, edi #157.34
+ mulx rbx, r12, rbx #160.35
+ mov edx, edi #161.34
+ setb r10b #157.34
+ adox edx, edi #161.34
+ mov edx, edi #163.34
+ adox r14, r9 #161.34
+ mov r9d, 0 #162.34
+ adox r11, r9 #162.34
+ adox rbx, r9 #163.34
+ seto dl #163.34
+ clc #164.31
+ adcx rdx, r12 #164.31
+ mov r12d, edi #165.31
+ adox r12d, edi #165.31
+ adox rbp, r13 #165.31
+ mov ebp, edi #169.34
+ adox r8, r14 #166.34
+ mov r13, r8 #171.34
+ adox rsi, r11 #167.34
+ mov r11, 0xffffffff00000001 #174.34
+ adox rax, rbx #168.34
+ mov rbx, QWORD PTR [152+rsp] #16.23[spill]
+ adox r15, rdx #169.34
+ mov rdx, rsi #172.34
+ seto bpl #169.34
+ xor r12d, r12d #169.34
+ xor r14d, r14d #169.34
+ add r10d, ebp #175.31
+ sub r13, rcx #171.34
+ mov rcx, 0x0ffffffff #172.34
+ mov rbp, r15 #174.34
+ sbb rdx, rcx #172.34
+ mov rcx, rax #173.34
+ sbb rcx, r9 #173.34
+ sbb rbp, r11 #174.34
+ mov r11, QWORD PTR [208+rsp] #322.29[spill]
+ setb r14b #174.34
+ cmp edi, r14d #175.31
+ sbb r10, r9 #175.31
+ mov r9d, edi #175.31
+ setb r9b #175.31
+ mov r10d, 1 #175.31
+ or rbx, QWORD PTR [176+rsp] #16.23[spill]
+ cmove r12d, r10d #328.5
+ dec r9 #9.35
+ and rbp, r9 #10.31
+ and rcx, r9 #10.31
+ and rdx, r9 #10.31
+ and r13, r9 #10.31
+ not r9 #10.43
+ and rsi, r9 #10.60
+ dec r12 #9.35
+ or rdx, rsi #10.60
+ mov rsi, r12 #10.43
+ and r15, r9 #10.60
+ and rax, r9 #10.60
+ and r9, r8 #10.60
+ not rsi #10.43
+ mov r8, QWORD PTR [104+rsp] #328.25[spill]
+ or rcx, rax #10.60
+ mov rax, rsi #10.60
+ or rbp, r15 #10.60
+ or r11, QWORD PTR [272+rsp] #322.29[spill]
+ mov r15, QWORD PTR [88+r8] #328.25
+ mov QWORD PTR [336+rsp], rdx #10.60[spill]
+ cmove edi, r10d #332.5
+ and r15, r12 #10.31
+ and rax, 1 #10.60
+ mov QWORD PTR [80+rsp], rdx #327.35
+ mov rdx, 0xffffffff00000000 #10.60
+ or r15, rax #10.60
+ and rdx, rsi #10.60
+ mov rax, QWORD PTR [80+r8] #329.25
+ or r13, r9 #10.60
+ and rax, r12 #10.31
+ mov QWORD PTR [344+rsp], rcx #10.60[spill]
+ or rax, rdx #10.60
+ mov QWORD PTR [72+rsp], rcx #327.35
+ mov rdx, QWORD PTR [72+r8] #330.25
+ mov rcx, QWORD PTR [64+r8] #331.25
+ and rdx, r12 #10.31
+ mov QWORD PTR [320+rsp], rbp #10.60[spill]
+ and rcx, r12 #10.31
+ mov QWORD PTR [64+rsp], rbp #327.35
+ or rdx, rsi #10.60
+ or rcx, rsi #10.60
+ mov rbp, QWORD PTR [112+rsp] #332.32[spill]
+ dec rdi #9.35
+ mov QWORD PTR [88+r8], r15 #328.5
+ and r15, rdi #10.31
+ mov QWORD PTR [80+r8], rax #329.5
+ and rax, rdi #10.31
+ mov QWORD PTR [72+r8], rdx #330.5
+ and rdx, rdi #10.31
+ mov QWORD PTR [64+r8], rcx #331.5
+ and rcx, rdi #10.31
+ mov QWORD PTR [232+rsp], rdi #9.35[spill]
+ not rdi #10.43
+ mov QWORD PTR [328+rsp], r13 #10.60[spill]
+ mov QWORD PTR [88+rsp], r13 #327.35
+ mov r13, QWORD PTR [88+rbp] #332.32
+ and r13, rdi #10.60
+ or r15, r13 #10.60
+ mov QWORD PTR [88+r8], r15 #332.5
+ mov r13, QWORD PTR [80+rbp] #333.32
+ and r13, rdi #10.60
+ or rax, r13 #10.60
+ mov QWORD PTR [80+r8], rax #333.5
+ mov QWORD PTR [224+rsp], rsi #10.43[spill]
+ mov rsi, QWORD PTR [72+rbp] #334.32
+ and rsi, rdi #10.60
+ or rdx, rsi #10.60
+ mov QWORD PTR [72+r8], rdx #334.5
+ mov QWORD PTR [240+rsp], r12 #9.35[spill]
+ mov r12, QWORD PTR [64+rbp] #335.32
+ and r12, rdi #10.60
+ or rcx, r12 #10.60
+ mov QWORD PTR [216+rsp], rdi #10.43[spill]
+ mov QWORD PTR [64+r8], rcx #335.5
+ vmovups XMMWORD PTR [32+rsp], xmm0 #336.21
+ vmovups XMMWORD PTR [48+rsp], xmm0 #336.21
+ mov rdx, QWORD PTR [368+rsp] #336.21[spill]
+ mov rsi, QWORD PTR [360+rsp] #336.21[spill]
+ mov rdi, QWORD PTR [352+rsp] #336.21[spill]
+ mov r9, rbp #73.33
+ xor ebp, ebp #77.32
+ mov QWORD PTR [368+rsp], rdx #[spill]
+ xor r11d, r11d #80.30
+ mov QWORD PTR [352+rsp], rdi #[spill]
+ mov rdx, QWORD PTR [376+rsp] #73.33[spill]
+ xor edi, edi #77.32
+ mulx r12, r10, QWORD PTR [r9] #73.33
+ mulx r8, r14, QWORD PTR [8+r9] #74.33
+ vpxor xmm0, xmm0, xmm0 #337.21
+ adcx r10, r8 #77.32
+ mov QWORD PTR [360+rsp], rsi #[spill]
+ mulx rcx, rsi, QWORD PTR [16+r9] #75.33
+ adcx r14, rcx #78.32
+ mov rcx, -1 #81.33
+ mulx rax, r15, QWORD PTR [24+r9] #76.33
+ mov rdx, r12 #81.33
+ adcx rsi, rax #79.32
+ mov rax, 0x0ffffffff #82.33
+ mulx r13, rbx, rcx #81.33
+ setb dil #79.32
+ adox r11d, ebp #80.30
+ adox rdi, r15 #80.30
+ mov r15, 0xffffffff00000001 #83.33
+ mulx r11, rax, rax #82.33
+ clc #84.32
+ mulx rcx, r8, r15 #83.33
+ mov r15d, ebp #87.30
+ adcx rbx, r11 #84.32
+ mov r11d, 0 #85.32
+ mov rdx, QWORD PTR [400+rsp] #93.33[spill]
+ adcx rax, r11 #85.32
+ adcx rcx, r11 #86.32
+ mov r11d, ebp #86.32
+ setb r11b #86.32
+ adox r15d, ebp #87.30
+ adox r11, r8 #87.30
+ clc #88.30
+ mov r8d, ebp #92.32
+ adcx r12, r13 #88.30
+ mulx r13, r12, QWORD PTR [8+r9] #94.33
+ adcx r10, rbx #89.32
+ adcx r14, rax #90.32
+ mulx rax, rbx, QWORD PTR [r9] #93.33
+ adcx rsi, rcx #91.32
+ adcx rdi, r11 #92.32
+ mulx r11, r15, QWORD PTR [16+r9] #95.33
+ mulx rdx, rcx, QWORD PTR [24+r9] #96.33
+ mov r9d, ebp #97.32
+ setb r8b #92.32
+ adox r9d, ebp #97.32
+ mov r9, 0xffffffff00000001 #108.35
+ adox rbx, r13 #97.32
+ mov r13d, ebp #99.32
+ adox r12, r11 #98.32
+ mov r11d, ebp #101.34
+ adox r15, rdx #99.32
+ seto r13b #99.32
+ clc #100.30
+ adcx r13, rcx #100.30
+ adox r11d, ebp #101.34
+ mov ecx, ebp #105.34
+ adox r10, rax #101.34
+ mov rax, -1 #106.35
+ mov rdx, r10 #106.35
+ adox r14, rbx #102.34
+ mov rbx, 0x0ffffffff #107.35
+ adox rsi, r12 #103.34
+ adox rdi, r15 #104.34
+ mov r15d, 0 #110.34
+ adox r8, r13 #105.34
+ mulx r11, r13, rax #106.35
+ seto cl #105.34
+ clc #109.34
+ mulx rax, r12, rbx #107.35
+ adcx r13, rax #109.34
+ mulx rbx, rax, r9 #108.35
+ mov r9d, ebp #111.34
+ adcx r12, r15 #110.34
+ mov rdx, QWORD PTR [392+rsp] #119.35[spill]
+ adcx rbx, r15 #111.34
+ mov r15d, ebp #112.31
+ setb r9b #111.34
+ adox r15d, ebp #112.31
+ adox r9, rax #112.31
+ clc #113.31
+ mov eax, ebp #123.34
+ adcx r10, r11 #113.31
+ adcx r14, r13 #114.34
+ adcx rsi, r12 #115.34
+ mov r12d, ebp #117.34
+ adcx rdi, rbx #116.34
+ mov rbx, QWORD PTR [112+rsp] #119.35[spill]
+ adcx r8, r9 #117.34
+ mulx r13, r9, QWORD PTR [rbx] #119.35
+ setb r12b #117.34
+ adox eax, ebp #123.34
+ mov DWORD PTR [152+rsp], r12d #117.34[spill]
+ mov eax, ebp #125.34
+ mulx r12, r10, QWORD PTR [8+rbx] #120.35
+ adox r9, r12 #123.34
+ mulx r11, r15, QWORD PTR [16+rbx] #121.35
+ adox r10, r11 #124.34
+ mulx rdx, rbx, QWORD PTR [24+rbx] #122.35
+ adox r15, rdx #125.34
+ seto al #125.34
+ clc #126.31
+ adcx rax, rbx #126.31
+ mov ebx, ebp #127.34
+ adox ebx, ebp #127.34
+ mov rbx, -1 #132.35
+ adox r14, r13 #127.34
+ mov r13, 0x0ffffffff #133.35
+ mov rdx, r14 #132.35
+ adox rsi, r9 #128.34
+ mov r9, 0xffffffff00000001 #134.35
+ mulx r12, r11, rbx #132.35
+ adox rdi, r10 #129.34
+ mov r10d, ebp #130.34
+ adox r8, r15 #130.34
+ mulx r15, r13, r13 #133.35
+ seto r10b #130.34
+ add ecx, DWORD PTR [152+rsp] #131.34[spill]
+ cmp ebp, r10d #131.34
+ mulx r9, r10, r9 #134.35
+ mov edx, ebp #135.34
+ adcx rcx, rax #131.34
+ mov eax, ebp #131.34
+ setb al #131.34
+ adox edx, ebp #135.34
+ mov rdx, QWORD PTR [384+rsp] #145.35[spill]
+ adox r11, r15 #135.34
+ mov r15d, 0 #136.34
+ adox r13, r15 #136.34
+ adox r9, r15 #137.34
+ mov r15d, ebp #137.34
+ seto r15b #137.34
+ clc #138.31
+ adcx r15, r10 #138.31
+ mov r10d, ebp #139.31
+ adox r10d, ebp #139.31
+ adox r14, r12 #139.31
+ adox rsi, r11 #140.34
+ adox rdi, r13 #141.34
+ adox r8, r9 #142.34
+ mov r9, QWORD PTR [112+rsp] #145.35[spill]
+ adox rcx, r15 #143.34
+ mov r15d, ebp #143.34
+ mulx r14, r11, QWORD PTR [r9] #145.35
+ seto r15b #143.34
+ clc #149.34
+ mulx r12, r13, QWORD PTR [8+r9] #146.35
+ adcx r11, r12 #149.34
+ mulx r10, r12, QWORD PTR [16+r9] #147.35
+ adcx r13, r10 #150.34
+ mulx r9, r10, QWORD PTR [24+r9] #148.35
+ mov edx, ebp #152.31
+ adcx r12, r9 #151.34
+ mov r9d, ebp #151.34
+ setb r9b #151.34
+ adox edx, ebp #152.31
+ adox r9, r10 #152.31
+ mov r10d, ebp #152.31
+ seto r10b #152.31
+ clc #153.34
+ adcx rsi, r14 #153.34
+ mov r14d, ebp #156.34
+ mov rdx, rsi #158.35
+ adcx rdi, r11 #154.34
+ mov r11, 0x0ffffffff #159.35
+ adcx r8, r13 #155.34
+ mulx r13, r11, r11 #159.35
+ adcx rcx, r12 #156.34
+ setb r14b #156.34
+ xor r12d, r12d #156.34
+ add eax, r15d #157.34
+ cmp ebp, r14d #157.34
+ mov r15, 0xffffffff00000001 #160.35
+ mulx r10, r15, r15 #160.35
+ adcx rax, r9 #157.34
+ mulx r9, r14, rbx #158.35
+ mov edx, ebp #161.34
+ setb r12b #157.34
+ adox edx, ebp #161.34
+ mov edx, ebp #163.34
+ adox r14, r13 #161.34
+ mov r13d, 0 #162.34
+ adox r11, r13 #162.34
+ adox r10, r13 #163.34
+ seto dl #163.34
+ clc #164.31
+ adcx rdx, r15 #164.31
+ mov r15d, ebp #165.31
+ adox r15d, ebp #165.31
+ adox rsi, r9 #165.31
+ mov r9, 0x0ffffffff #172.34
+ mov esi, ebp #169.34
+ adox rdi, r14 #166.34
+ adox r8, r11 #167.34
+ adox rcx, r10 #168.34
+ mov r10, 0xffffffff00000001 #174.34
+ adox rax, rdx #169.34
+ mov rdx, rax #174.34
+ seto sil #169.34
+ add r12d, esi #175.31
+ mov rsi, rdi #171.34
+ sub rsi, rbx #171.34
+ mov rbx, r8 #172.34
+ sbb rbx, r9 #172.34
+ mov r9, rcx #173.34
+ sbb r9, r13 #173.34
+ sbb rdx, r10 #174.34
+ mov r10d, ebp #174.34
+ setb r10b #174.34
+ cmp ebp, r10d #175.31
+ sbb r12, r13 #175.31
+ setb bpl #175.31
+ dec rbp #9.35
+ and rdx, rbp #10.31
+ and r9, rbp #10.31
+ and rbx, rbp #10.31
+ and rsi, rbp #10.31
+ not rbp #10.43
+ and rax, rbp #10.60
+ and rcx, rbp #10.60
+ and r8, rbp #10.60
+ and rbp, rdi #10.60
+ or rdx, rax #10.60
+ or r9, rcx #10.60
+ or rbx, r8 #10.60
+ or rsi, rbp #10.60
+ mov QWORD PTR [rsp], rdx #336.35
+ mov QWORD PTR [8+rsp], r9 #336.35
+ mov QWORD PTR [16+rsp], rbx #336.35
+ mov QWORD PTR [24+rsp], rsi #336.35
+ vmovups XMMWORD PTR [64+rsp], xmm0 #337.21
+ vmovups XMMWORD PTR [80+rsp], xmm0 #337.21
+ mov rdx, QWORD PTR [368+rsp] #337.21[spill]
+ mov rsi, QWORD PTR [360+rsp] #337.21[spill]
+ mov rdi, QWORD PTR [352+rsp] #337.21[spill]
+ mov r12, QWORD PTR [32+rsp] #337.64
+ xor ebp, ebp #24.32
+ xor r9d, r9d #21.32
+ mov QWORD PTR [152+rsp], r12 #337.64[spill]
+ mov rax, 0x0ffffffff #26.32
+ adcx r12, r12 #21.32
+ vpxor xmm0, xmm0, xmm0 #338.20
+ mov r11, QWORD PTR [40+rsp] #337.88
+ mov r9, r12 #25.32
+ mov QWORD PTR [160+rsp], r11 #337.88[spill]
+ mov r13, 0xffffffff00000001 #28.32
+ adcx r11, r11 #22.32
+ mov r10, QWORD PTR [48+rsp] #337.80
+ mov QWORD PTR [168+rsp], r10 #337.80[spill]
+ adcx r10, r10 #23.32
+ mov r8, QWORD PTR [56+rsp] #337.72
+ mov QWORD PTR [176+rsp], r8 #337.72[spill]
+ adcx r8, r8 #24.32
+ mov rcx, r8 #28.32
+ setb bpl #24.32
+ mov rbx, -1 #24.32
+ xor r14d, r14d #24.32
+ xor r15d, r15d #24.32
+ sub r9, rbx #25.32
+ mov rbx, r11 #26.32
+ sbb rbx, rax #26.32
+ mov rax, r10 #27.32
+ sbb rax, r14 #27.32
+ sbb rcx, r13 #28.32
+ sbb rbp, r14 #29.30
+ setb r15b #29.30
+ dec r15 #9.35
+ and rcx, r15 #10.31
+ and rax, r15 #10.31
+ and rbx, r15 #10.31
+ and r9, r15 #10.31
+ not r15 #10.43
+ and r8, r15 #10.60
+ and r10, r15 #10.60
+ and r11, r15 #10.60
+ and r15, r12 #10.60
+ or rcx, r8 #10.60
+ or rax, r10 #10.60
+ or rbx, r11 #10.60
+ or r9, r15 #10.60
+ mov QWORD PTR [64+rsp], rcx #337.35
+ mov QWORD PTR [72+rsp], rax #337.35
+ mov QWORD PTR [80+rsp], rbx #337.35
+ mov QWORD PTR [88+rsp], r9 #337.35
+ vmovups XMMWORD PTR [rsp], xmm0 #338.20
+ vmovups XMMWORD PTR [16+rsp], xmm0 #338.20
+ mov r8, QWORD PTR [312+rsp] #41.32[spill]
+ xor ebp, ebp #41.32
+ sub r8, rcx #41.32
+ mov rcx, 0xffffffff00000001 #49.30
+ sbb rdx, rax #42.32
+ sbb rsi, rbx #43.32
+ sbb rdi, r9 #44.32
+ mov r9d, ebp #44.32
+ vpxor xmm0, xmm0, xmm0 #348.21
+ setb r9b #44.32
+ xor r10d, r10d #44.32
+ xor r12d, r12d #44.32
+ xor r15d, r15d #44.32
+ xor eax, eax #44.32
+ xor ebx, ebx #44.32
+ xor r13d, r13d #44.32
+ test r9d, r9d #45.38
+ mov r9, -1 #45.38
+ cmovne r13, r9 #45.38
+ adox r10d, ebp #46.32
+ mov r11d, r13d #47.32
+ adox r8, r13 #46.32
+ mov QWORD PTR [24+rsp], r8 #338.34
+ adox rdx, r11 #47.32
+ mov QWORD PTR [16+rsp], rdx #338.34
+ adox rsi, rbx #48.32
+ mov QWORD PTR [8+rsp], rsi #338.34
+ seto r12b #48.32
+ and r13, rcx #49.30
+ cmp ebp, r12d #49.30
+ mov r11, QWORD PTR [240+rsp] #10.31[spill]
+ adcx rdi, r13 #49.30
+ mov QWORD PTR [rsp], rdi #338.34
+ sub rdi, QWORD PTR [320+rsp] #41.32[spill]
+ sbb rsi, QWORD PTR [344+rsp] #42.32[spill]
+ sbb rdx, QWORD PTR [336+rsp] #43.32[spill]
+ sbb r8, QWORD PTR [328+rsp] #44.32[spill]
+ setb r15b #44.32
+ test r15d, r15d #45.38
+ mov r15, QWORD PTR [96+rsp] #340.32[spill]
+ cmove r9, rbx #45.38
+ adox eax, ebp #46.32
+ mov r10d, r9d #47.32
+ adox rdi, r9 #46.32
+ mov rax, QWORD PTR [104+rsp] #53.1[spill]
+ adox rsi, r10 #47.32
+ mov QWORD PTR [24+rax], rdi #53.1
+ adox rdx, rbx #48.32
+ mov ebx, ebp #48.32
+ mov QWORD PTR [8+rax], rdx #51.1
+ seto bl #48.32
+ and rcx, r9 #49.30
+ cmp ebp, ebx #49.30
+ mov QWORD PTR [16+rax], rsi #52.1
+ adcx r8, rcx #49.30
+ mov QWORD PTR [rax], r8 #50.1
+ mov r12, QWORD PTR [24+r15] #340.32
+ mov rcx, QWORD PTR [224+rsp] #10.60[spill]
+ and rdi, r11 #10.31
+ and r12, rcx #10.60
+ and rsi, r11 #10.31
+ or rdi, r12 #10.60
+ and rdx, r11 #10.31
+ mov QWORD PTR [24+rax], rdi #340.5
+ and r8, r11 #10.31
+ mov r13, QWORD PTR [16+r15] #341.32
+ and r13, rcx #10.60
+ or rsi, r13 #10.60
+ mov QWORD PTR [16+rax], rsi #341.5
+ mov r14, QWORD PTR [8+r15] #342.32
+ and r14, rcx #10.60
+ or rdx, r14 #10.60
+ mov QWORD PTR [8+rax], rdx #342.5
+ mov r11, QWORD PTR [112+rsp] #344.32[spill]
+ mov r13, QWORD PTR [r15] #343.32
+ and r13, rcx #10.60
+ or r8, r13 #10.60
+ mov QWORD PTR [rax], r8 #343.5
+ mov rbx, QWORD PTR [232+rsp] #10.31[spill]
+ and rdi, rbx #10.31
+ mov r12, QWORD PTR [216+rsp] #10.60[spill]
+ and rsi, rbx #10.31
+ mov rbp, QWORD PTR [24+r11] #344.32
+ and rdx, rbx #10.31
+ and rbp, r12 #10.60
+ and r8, rbx #10.31
+ or rdi, rbp #10.60
+ mov QWORD PTR [24+rax], rdi #344.5
+ mov r9, QWORD PTR [16+r11] #345.32
+ and r9, r12 #10.60
+ or rsi, r9 #10.60
+ mov QWORD PTR [16+rax], rsi #345.5
+ mov r10, QWORD PTR [8+r11] #346.32
+ and r10, r12 #10.60
+ or rdx, r10 #10.60
+ mov QWORD PTR [8+rax], rdx #346.5
+ mov rcx, QWORD PTR [r11] #347.32
+ and rcx, r12 #10.60
+ or r8, rcx #10.60
+ mov QWORD PTR [312+rsp], r8 #10.60[spill]
+ mov QWORD PTR [rax], r8 #347.5
+ vmovups XMMWORD PTR [32+rsp], xmm0 #348.21
+ vmovups XMMWORD PTR [48+rsp], xmm0 #348.21
+ mov rbp, r11 #73.33
+ xor r8d, r8d #77.32
+ mov QWORD PTR [368+rsp], rdx #[spill]
+ xor r10d, r10d #77.32
+ mov rdx, QWORD PTR [320+rsp] #73.33[spill]
+ mov QWORD PTR [352+rsp], rdi #[spill]
+ mov r13, 0x0ffffffff #82.33
+ mulx rax, rdi, QWORD PTR [32+rbp] #73.33
+ mov r14, 0xffffffff00000001 #83.33
+ mulx rbx, r9, QWORD PTR [40+rbp] #74.33
+ adox rdi, rbx #77.32
+ vpxor xmm0, xmm0, xmm0 #349.21
+ mulx rcx, r11, QWORD PTR [48+rbp] #75.33
+ adox r9, rcx #78.32
+ mulx r12, r15, QWORD PTR [56+rbp] #76.33
+ mov rdx, rax #81.33
+ adox r11, r12 #79.32
+ mov QWORD PTR [360+rsp], rsi #[spill]
+ seto r10b #79.32
+ clc #80.30
+ adcx r10, r15 #80.30
+ mulx r12, rcx, r13 #82.33
+ mov rsi, -1 #81.33
+ mulx r15, rbx, rsi #81.33
+ mulx r13, r14, r14 #83.33
+ mov edx, r8d #84.32
+ adox edx, r8d #84.32
+ mov edx, r8d #86.32
+ adox rbx, r12 #84.32
+ mov r12d, 0 #85.32
+ adox rcx, r12 #85.32
+ adox r13, r12 #86.32
+ seto dl #86.32
+ clc #87.30
+ adcx rdx, r14 #87.30
+ mov r14d, r8d #88.30
+ adox r14d, r8d #88.30
+ adox rax, r15 #88.30
+ adox rdi, rbx #89.32
+ mov ebx, r8d #92.32
+ adox r9, rcx #90.32
+ adox r11, r13 #91.32
+ adox r10, rdx #92.32
+ mov rdx, QWORD PTR [344+rsp] #93.33[spill]
+ seto bl #92.32
+ clc #97.32
+ mulx r15, r13, QWORD PTR [32+rbp] #93.33
+ mulx rcx, r14, QWORD PTR [40+rbp] #94.33
+ adcx r13, rcx #97.32
+ mulx rax, rcx, QWORD PTR [48+rbp] #95.33
+ adcx r14, rax #98.32
+ mulx rax, rbp, QWORD PTR [56+rbp] #96.33
+ mov edx, r8d #100.30
+ adcx rcx, rax #99.32
+ mov eax, r8d #99.32
+ setb al #99.32
+ adox edx, r8d #100.30
+ adox rax, rbp #100.30
+ mov ebp, r8d #100.30
+ seto bpl #100.30
+ clc #101.34
+ adcx rdi, r15 #101.34
+ mov r15, 0x0ffffffff #107.35
+ mov rdx, rdi #106.35
+ adcx r9, r13 #102.34
+ mov r13, 0xffffffff00000001 #108.35
+ mulx rbp, rsi, rsi #106.35
+ adcx r11, r14 #103.34
+ mulx r13, r14, r13 #108.35
+ adcx r10, rcx #104.34
+ mov ecx, r8d #105.34
+ adcx rbx, rax #105.34
+ mulx r15, rax, r15 #107.35
+ mov edx, r8d #109.34
+ setb cl #105.34
+ adox edx, r8d #109.34
+ mov rdx, QWORD PTR [336+rsp] #119.35[spill]
+ adox rsi, r15 #109.34
+ mov r15d, r8d #111.34
+ adox rax, r12 #110.34
+ adox r13, r12 #111.34
+ seto r15b #111.34
+ clc #112.31
+ adcx r15, r14 #112.31
+ mov r14d, r8d #113.31
+ adox r14d, r8d #113.31
+ adox rdi, rbp #113.31
+ mov edi, r8d #117.34
+ adox r9, rsi #114.34
+ adox r11, rax #115.34
+ adox r10, r13 #116.34
+ mov r13, QWORD PTR [112+rsp] #119.35[spill]
+ adox rbx, r15 #117.34
+ mulx rax, rsi, QWORD PTR [32+r13] #119.35
+ seto dil #117.34
+ clc #123.34
+ mulx rbp, r15, QWORD PTR [40+r13] #120.35
+ adcx rsi, rbp #123.34
+ mulx r14, rbp, QWORD PTR [48+r13] #121.35
+ adcx r15, r14 #124.34
+ mulx r13, r14, QWORD PTR [56+r13] #122.35
+ mov edx, r8d #126.31
+ adcx rbp, r13 #125.34
+ mov r13d, r8d #125.34
+ setb r13b #125.34
+ adox edx, r8d #126.31
+ adox r13, r14 #126.31
+ clc #127.34
+ adcx r9, rax #127.34
+ mov rdx, r9 #132.35
+ adcx r11, rsi #128.34
+ mov esi, r8d #130.34
+ adcx r10, r15 #129.34
+ adcx rbx, rbp #130.34
+ mov rbp, 0x0ffffffff #133.35
+ mulx r15, r14, rbp #133.35
+ setb sil #130.34
+ xor eax, eax #130.34
+ add ecx, edi #131.34
+ mov rdi, -1 #131.34
+ cmp r8d, esi #131.34
+ mov rsi, 0xffffffff00000001 #134.35
+ adcx rcx, r13 #131.34
+ mulx rdi, r13, rdi #132.35
+ mulx rsi, rbp, rsi #134.35
+ mov edx, r8d #135.34
+ setb al #131.34
+ adox edx, r8d #135.34
+ mov rdx, QWORD PTR [328+rsp] #145.35[spill]
+ adox r13, r15 #135.34
+ mov r15d, r8d #137.34
+ adox r14, r12 #136.34
+ adox rsi, r12 #137.34
+ seto r15b #137.34
+ clc #138.31
+ adcx r15, rbp #138.31
+ mov ebp, r8d #139.31
+ adox ebp, r8d #139.31
+ mov rbp, QWORD PTR [112+rsp] #145.35[spill]
+ adox r9, rdi #139.31
+ mov r9d, r8d #143.34
+ adox r11, r13 #140.34
+ mulx rdi, r13, QWORD PTR [32+rbp] #145.35
+ adox r10, r14 #141.34
+ adox rbx, rsi #142.34
+ adox rcx, r15 #143.34
+ mulx r15, rsi, QWORD PTR [40+rbp] #146.35
+ seto r9b #143.34
+ clc #149.34
+ adcx r13, r15 #149.34
+ mulx r15, r14, QWORD PTR [48+rbp] #147.35
+ adcx rsi, r15 #150.34
+ mulx rbp, r15, QWORD PTR [56+rbp] #148.35
+ mov edx, r8d #152.31
+ adcx r14, rbp #151.34
+ mov ebp, r8d #151.34
+ setb bpl #151.34
+ adox edx, r8d #152.31
+ adox rbp, r15 #152.31
+ clc #153.34
+ adcx r11, rdi #153.34
+ mov rdx, r11 #158.35
+ adcx r10, r13 #154.34
+ mov r13d, r8d #156.34
+ adcx rbx, rsi #155.34
+ mov rsi, 0xffffffff00000001 #160.35
+ adcx rcx, r14 #156.34
+ mov r14, 0x0ffffffff #159.35
+ setb r13b #156.34
+ xor edi, edi #156.34
+ add eax, r9d #157.34
+ mov r9, -1 #157.34
+ cmp r8d, r13d #157.34
+ mulx r9, r15, r9 #158.35
+ adcx rax, rbp #157.34
+ mulx r13, rbp, r14 #159.35
+ mulx rsi, r14, rsi #160.35
+ mov edx, r8d #161.34
+ setb dil #157.34
+ adox edx, r8d #161.34
+ mov rdx, 0xffffffff00000001 #174.34
+ adox r15, r13 #161.34
+ mov r13d, r8d #163.34
+ adox rbp, r12 #162.34
+ adox rsi, r12 #163.34
+ seto r13b #163.34
+ clc #164.31
+ adcx r13, r14 #164.31
+ mov r14d, r8d #165.31
+ adox r14d, r8d #165.31
+ adox r11, r9 #165.31
+ mov r11d, r8d #169.34
+ adox r10, r15 #166.34
+ adox rbx, rbp #167.34
+ mov rbp, 0x0ffffffff #172.34
+ adox rcx, rsi #168.34
+ adox rax, r13 #169.34
+ mov rsi, rax #174.34
+ seto r11b #169.34
+ mov r9, -1 #169.34
+ xor r15d, r15d #169.34
+ add edi, r11d #175.31
+ mov r11, r10 #171.34
+ sub r11, r9 #171.34
+ mov r9, rbx #172.34
+ sbb r9, rbp #172.34
+ mov rbp, rcx #173.34
+ sbb rbp, r12 #173.34
+ sbb rsi, rdx #174.34
+ setb r15b #174.34
+ cmp r8d, r15d #175.31
+ sbb rdi, r12 #175.31
+ setb r8b #175.31
+ dec r8 #9.35
+ and rsi, r8 #10.31
+ and rbp, r8 #10.31
+ and r9, r8 #10.31
+ and r11, r8 #10.31
+ not r8 #10.43
+ and rax, r8 #10.60
+ and rcx, r8 #10.60
+ and rbx, r8 #10.60
+ and r8, r10 #10.60
+ or rsi, rax #10.60
+ or rbp, rcx #10.60
+ or r9, rbx #10.60
+ or r11, r8 #10.60
+ mov QWORD PTR [64+rsp], rsi #10.60[spill]
+ mov QWORD PTR [32+rsp], rsi #348.34
+ mov QWORD PTR [40+rsp], rbp #348.34
+ mov QWORD PTR [72+rsp], r11 #10.60[spill]
+ mov QWORD PTR [48+rsp], r9 #348.34
+ mov QWORD PTR [56+rsp], r11 #348.34
+ vmovups XMMWORD PTR [rsp], xmm0 #349.21
+ vmovups XMMWORD PTR [16+rsp], xmm0 #349.21
+ mov rdx, QWORD PTR [368+rsp] #349.21[spill]
+ mov rsi, QWORD PTR [360+rsp] #349.21[spill]
+ mov rdi, QWORD PTR [352+rsp] #349.21[spill]
+ mov rax, QWORD PTR [152+rsp] #41.32[spill]
+ xor r12d, r12d #41.32
+ sub rax, QWORD PTR [312+rsp] #41.32[spill]
+ mov rbx, QWORD PTR [160+rsp] #42.32[spill]
+ sbb rbx, rdx #42.32
+ mov rcx, QWORD PTR [168+rsp] #43.32[spill]
+ mov r11, 0xffffffff00000001 #49.30
+ sbb rcx, rsi #43.32
+ mov r13, QWORD PTR [176+rsp] #44.32[spill]
+ vpxor xmm0, xmm0, xmm0 #350.21
+ sbb r13, rdi #44.32
+ mov edi, r12d #44.32
+ setb dil #44.32
+ mov r8, -1 #44.32
+ xor r10d, r10d #44.32
+ xor edx, edx #44.32
+ test edi, edi #45.38
+ cmove r8, rdx #45.38
+ clc #46.32
+ mov esi, r8d #47.32
+ adcx rax, r8 #46.32
+ mov QWORD PTR [152+rsp], rax #46.32[spill]
+ adcx rbx, rsi #47.32
+ mov QWORD PTR [24+rsp], rax #349.34
+ adcx rcx, rdx #48.32
+ mov QWORD PTR [160+rsp], rbx #47.32[spill]
+ setb r10b #48.32
+ and r11, r8 #49.30
+ cmp r12d, r10d #49.30
+ mov QWORD PTR [168+rsp], rcx #48.32[spill]
+ adcx r13, r11 #49.30
+ mov QWORD PTR [8+rsp], rcx #349.34
+ mov QWORD PTR [16+rsp], rbx #349.34
+ mov QWORD PTR [176+rsp], r13 #49.30[spill]
+ mov QWORD PTR [rsp], r13 #349.34
+ vmovups XMMWORD PTR [32+rsp], xmm0 #350.21
+ vmovups XMMWORD PTR [48+rsp], xmm0 #350.21
+ mov rdx, r13 #73.33
+ mov QWORD PTR [rsp], rbp #[spill]
+ mov r14, -1 #81.33
+ xor r13d, r13d #77.32
+ mov r12, 0x0ffffffff #82.33
+ mov r13, 0xffffffff00000001 #83.33
+ mov r8, QWORD PTR [144+rsp] #73.33[spill]
+ mov rbp, QWORD PTR [128+rsp] #74.33[spill]
+ mov QWORD PTR [8+rsp], r9 #[spill]
+ mulx rax, rbx, r8 #73.33
+ mulx r9, r11, rbp #74.33
+ adox rbx, r9 #77.32
+ mulx rsi, rdi, QWORD PTR [136+rsp] #75.33[spill]
+ adox r11, rsi #78.32
+ mov esi, 0 #79.32
+ mulx r15, r10, QWORD PTR [120+rsp] #76.33[spill]
+ mov r9d, esi #79.32
+ adox rdi, r15 #79.32
+ mov rdx, rax #81.33
+ seto r9b #79.32
+ clc #80.30
+ adcx r9, r10 #80.30
+ mulx r14, r15, r14 #81.33
+ mulx r10, rcx, r12 #82.33
+ mulx r12, r13, r13 #83.33
+ mov edx, esi #84.32
+ adox edx, esi #84.32
+ mov edx, esi #86.32
+ adox r15, r10 #84.32
+ mov r10d, 0 #85.32
+ adox rcx, r10 #85.32
+ adox r12, r10 #86.32
+ seto dl #86.32
+ clc #87.30
+ adcx rdx, r13 #87.30
+ mov r13d, esi #88.30
+ adox r13d, esi #88.30
+ adox rax, r14 #88.30
+ adox rbx, r15 #89.32
+ adox r11, rcx #90.32
+ mov ecx, esi #92.32
+ adox rdi, r12 #91.32
+ adox r9, rdx #92.32
+ mov rdx, QWORD PTR [168+rsp] #93.33[spill]
+ seto cl #92.32
+ clc #97.32
+ mulx r15, r12, r8 #93.33
+ mulx rax, r14, rbp #94.33
+ adcx r12, rax #97.32
+ mulx r13, rbp, QWORD PTR [136+rsp] #95.33[spill]
+ adcx r14, r13 #98.32
+ mulx r13, rax, QWORD PTR [120+rsp] #96.33[spill]
+ mov edx, esi #100.30
+ adcx rbp, r13 #99.32
+ mov r13d, esi #99.32
+ setb r13b #99.32
+ adox edx, esi #100.30
+ adox r13, rax #100.30
+ mov eax, esi #100.30
+ seto al #100.30
+ clc #101.34
+ adcx rbx, r15 #101.34
+ mov r15, 0x0ffffffff #107.35
+ mov rdx, rbx #106.35
+ adcx r11, r12 #102.34
+ adcx rdi, r14 #103.34
+ mulx r15, r14, r15 #107.35
+ adcx r9, rbp #104.34
+ mov ebp, esi #105.34
+ adcx rcx, r13 #105.34
+ mov r13, -1 #106.35
+ mulx rax, r13, r13 #106.35
+ setb bpl #105.34
+ mov DWORD PTR [16+rsp], ebp #105.34[spill]
+ mov rbp, 0xffffffff00000001 #108.35
+ mulx rbp, r12, rbp #108.35
+ mov edx, esi #109.34
+ adox edx, esi #109.34
+ mov rdx, QWORD PTR [160+rsp] #119.35[spill]
+ adox r13, r15 #109.34
+ mov r15d, esi #111.34
+ adox r14, r10 #110.34
+ adox rbp, r10 #111.34
+ seto r15b #111.34
+ clc #112.31
+ adcx r15, r12 #112.31
+ mov r12d, esi #113.31
+ adox r12d, esi #113.31
+ adox rbx, rax #113.31
+ mulx rbx, r12, QWORD PTR [128+rsp] #120.35[spill]
+ adox r11, r13 #114.34
+ adox rdi, r14 #115.34
+ adox r9, rbp #116.34
+ mov ebp, esi #117.34
+ adox rcx, r15 #117.34
+ mulx r15, r14, r8 #119.35
+ seto bpl #117.34
+ clc #123.34
+ adcx r14, rbx #123.34
+ mulx rax, rbx, QWORD PTR [136+rsp] #121.35[spill]
+ adcx r12, rax #124.34
+ mulx r13, rax, QWORD PTR [120+rsp] #122.35[spill]
+ mov edx, esi #126.31
+ adcx rbx, r13 #125.34
+ mov r13d, esi #125.34
+ setb r13b #125.34
+ adox edx, esi #126.31
+ adox r13, rax #126.31
+ clc #127.34
+ mov eax, DWORD PTR [16+rsp] #131.34[spill]
+ adcx r11, r15 #127.34
+ mov r15d, esi #130.34
+ mov rdx, r11 #132.35
+ adcx rdi, r14 #128.34
+ adcx r9, r12 #129.34
+ adcx rcx, rbx #130.34
+ setb r15b #130.34
+ xor r14d, r14d #130.34
+ mov rbx, -1 #130.34
+ add eax, ebp #131.34
+ cmp esi, r15d #131.34
+ mov r15, 0x0ffffffff #133.35
+ mov rbp, 0xffffffff00000001 #134.35
+ adcx rax, r13 #131.34
+ mulx r13, rbx, rbx #132.35
+ setb r14b #131.34
+ mov DWORD PTR [24+rsp], r14d #131.34[spill]
+ mulx r15, r14, r15 #133.35
+ mulx rbp, r12, rbp #134.35
+ mov edx, esi #135.34
+ adox edx, esi #135.34
+ mov rdx, QWORD PTR [152+rsp] #145.35[spill]
+ adox rbx, r15 #135.34
+ mov r15d, esi #137.34
+ adox r14, r10 #136.34
+ adox rbp, r10 #137.34
+ seto r15b #137.34
+ clc #138.31
+ adcx r15, r12 #138.31
+ mov r12d, esi #139.31
+ adox r12d, esi #139.31
+ mov r12d, esi #152.31
+ adox r11, r13 #139.31
+ adox rdi, rbx #140.34
+ mulx rbx, r8, r8 #145.35
+ adox r9, r14 #141.34
+ mulx r14, r13, QWORD PTR [136+rsp] #147.35[spill]
+ adox rcx, rbp #142.34
+ mov ebp, esi #143.34
+ adox rax, r15 #143.34
+ mulx r11, r15, QWORD PTR [128+rsp] #146.35[spill]
+ seto bpl #143.34
+ clc #149.34
+ adcx r8, r11 #149.34
+ adcx r15, r14 #150.34
+ mulx r11, r14, QWORD PTR [120+rsp] #148.35[spill]
+ adcx r13, r11 #151.34
+ mov r11d, esi #151.34
+ setb r11b #151.34
+ adox r12d, esi #152.31
+ adox r11, r14 #152.31
+ clc #153.34
+ mov r14d, DWORD PTR [24+rsp] #157.34[spill]
+ adcx rdi, rbx #153.34
+ mov rdx, rdi #158.35
+ adcx r9, r8 #154.34
+ mov r8d, esi #156.34
+ adcx rcx, r15 #155.34
+ mov r15, 0xffffffff00000001 #160.35
+ adcx rax, r13 #156.34
+ setb r8b #156.34
+ mov r13, -1 #156.34
+ add r14d, ebp #157.34
+ cmp esi, r8d #157.34
+ mov rbp, 0x0ffffffff #159.35
+ mulx rbx, r8, r13 #158.35
+ adcx r14, r11 #157.34
+ mov r11d, esi #157.34
+ mulx r12, r13, rbp #159.35
+ mulx rbp, r15, r15 #160.35
+ mov edx, esi #161.34
+ setb r11b #157.34
+ adox edx, esi #161.34
+ adox r8, r12 #161.34
+ mov r12d, esi #163.34
+ adox r13, r10 #162.34
+ adox rbp, r10 #163.34
+ seto r12b #163.34
+ clc #164.31
+ adcx r12, r15 #164.31
+ mov r15d, esi #165.31
+ adox r15d, esi #165.31
+ adox rdi, rbx #165.31
+ mov rbx, 0x0ffffffff #172.34
+ mov edi, esi #169.34
+ adox r9, r8 #166.34
+ mov r15, r9 #171.34
+ adox rcx, r13 #167.34
+ mov r13, rcx #172.34
+ adox rax, rbp #168.34
+ adox r14, r12 #169.34
+ mov r8, r14 #174.34
+ seto dil #169.34
+ mov rdx, -1 #169.34
+ xor ebp, ebp #169.34
+ add r11d, edi #175.31
+ sub r15, rdx #171.34
+ mov rdi, 0xffffffff00000001 #174.34
+ sbb r13, rbx #172.34
+ mov rbx, rax #173.34
+ sbb rbx, r10 #173.34
+ sbb r8, rdi #174.34
+ setb bpl #174.34
+ cmp esi, ebp #175.31
+ mov ebp, esi #175.31
+ sbb r11, r10 #175.31
+ setb bpl #175.31
+ dec rbp #9.35
+ and r8, rbp #10.31
+ and rbx, rbp #10.31
+ and r13, rbp #10.31
+ and r15, rbp #10.31
+ not rbp #10.43
+ and r14, rbp #10.60
+ and rax, rbp #10.60
+ or r8, r14 #10.60
+ and rcx, rbp #10.60
+ and rbp, r9 #10.60
+ or rbx, rax #10.60
+ mov QWORD PTR [32+rsp], r8 #350.34
+ or r13, rcx #10.60
+ or r15, rbp #10.60
+ xor r9d, r9d #44.32
+ sub r8, QWORD PTR [64+rsp] #41.32[spill]
+ mov QWORD PTR [40+rsp], rbx #350.34
+ sbb rbx, QWORD PTR [rsp] #42.32[spill]
+ mov QWORD PTR [48+rsp], r13 #350.34
+ sbb r13, QWORD PTR [8+rsp] #43.32[spill]
+ mov QWORD PTR [56+rsp], r15 #350.34
+ sbb r15, QWORD PTR [72+rsp] #44.32[spill]
+ setb r9b #44.32
+ xor ecx, ecx #44.32
+ test r9d, r9d #45.38
+ mov r9, QWORD PTR [104+rsp] #53.1[spill]
+ cmove rdx, r10 #45.38
+ clc #46.32
+ mov eax, edx #47.32
+ adcx r8, rdx #46.32
+ mov QWORD PTR [56+r9], r8 #53.1
+ adcx rbx, rax #47.32
+ mov QWORD PTR [48+r9], rbx #52.1
+ adcx r13, r10 #48.32
+ mov QWORD PTR [40+r9], r13 #51.1
+ setb cl #48.32
+ and rdi, rdx #49.30
+ cmp esi, ecx #49.30
+ mov rax, QWORD PTR [224+rsp] #10.60[spill]
+ adcx r15, rdi #49.30
+ mov QWORD PTR [32+r9], r15 #50.1
+ mov rsi, QWORD PTR [240+rsp] #10.31[spill]
+ and r8, rsi #10.31
+ and rbx, rsi #10.31
+ and r13, rsi #10.31
+ and rsi, r15 #10.31
+ mov r15, QWORD PTR [96+rsp] #352.32[spill]
+ mov rcx, QWORD PTR [232+rsp] #10.31[spill]
+ mov rdx, QWORD PTR [216+rsp] #10.60[spill]
+ mov r10, QWORD PTR [56+r15] #352.32
+ and r10, rax #10.60
+ or r8, r10 #10.60
+ mov QWORD PTR [56+r9], r8 #352.5
+ and r8, rcx #10.31
+ mov r12, QWORD PTR [48+r15] #353.32
+ and r12, rax #10.60
+ or rbx, r12 #10.60
+ mov QWORD PTR [48+r9], rbx #353.5
+ and rbx, rcx #10.31
+ mov r14, QWORD PTR [40+r15] #354.32
+ and r14, rax #10.60
+ or r13, r14 #10.60
+ mov QWORD PTR [40+r9], r13 #354.5
+ and r13, rcx #10.31
+ mov r14, QWORD PTR [112+rsp] #356.32[spill]
+ and rax, QWORD PTR [32+r15] #10.60
+ or rsi, rax #10.60
+ mov QWORD PTR [32+r9], rsi #355.5
+ and rcx, rsi #10.31
+ mov r12, QWORD PTR [56+r14] #356.32
+ and r12, rdx #10.60
+ or r8, r12 #10.60
+ mov QWORD PTR [56+r9], r8 #356.5
+ mov r8, QWORD PTR [48+r14] #357.32
+ and r8, rdx #10.60
+ or rbx, r8 #10.60
+ mov QWORD PTR [48+r9], rbx #357.5
+ mov rbx, QWORD PTR [40+r14] #358.32
+ and rbx, rdx #10.60
+ or r13, rbx #10.60
+ mov QWORD PTR [40+r9], r13 #358.5
+ and rdx, QWORD PTR [32+r14] #10.60
+ or rcx, rdx #10.60
+ mov QWORD PTR [32+r9], rcx #359.5
+ add rsp, 424 #360.1
+ pop rbp #360.1
+ pop rbx #360.1
+ pop r15 #360.1
+ pop r14 #360.1
+ pop r13 #360.1
+ pop r12 #360.1
+ ret #360.1
diff --git a/src/Specific/NISTP256/AMD64/icc/measurements.txt b/src/Specific/NISTP256/AMD64/icc/measurements.txt
new file mode 100644
index 000000000..17abbfe2d
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/icc/measurements.txt
@@ -0,0 +1 @@
+1140 ashryn-noht-notb-noac-broadwell 2.60ghz 7.1.1 cac291e0
diff --git a/src/Specific/NISTP256/AMD64/measurements.txt b/src/Specific/NISTP256/AMD64/measurements.txt
new file mode 100644
index 000000000..66745d40c
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/measurements.txt
@@ -0,0 +1 @@
+1576 ashryn-noht-notb-noac-broadwell 2.60ghz 7.1.1 cac291e0
diff --git a/src/Specific/NISTP256/AMD64/p256.h b/src/Specific/NISTP256/AMD64/p256.h
new file mode 100644
index 000000000..db53b7696
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/p256.h
@@ -0,0 +1,2 @@
+void p256_jacobian_add_affine(long long unsigned int r[12], long long unsigned int j[12], long long unsigned int a[8]);
+
diff --git a/src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c b/src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c
new file mode 100644
index 000000000..bd6d6dfb1
--- /dev/null
+++ b/src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c
@@ -0,0 +1,363 @@
+#include <stdint.h>
+#include <stdbool.h>
+#include <x86intrin.h>
+#include "p256.h"
+
+#undef force_inline
+#define force_inline __attribute__((always_inline))
+
+#define uint64_t long long unsigned int
+
+inline uint64_t cmovcq(uint64_t c, uint64_t out_z, uint64_t out_nz) {
+ uint64_t all_set_if_zero = (c-1);
+ return (all_set_if_zero & out_z) | ((~all_set_if_zero)&out_nz);
+}
+
+inline uint64_t fenonzero(uint64_t x5, uint64_t x6, uint64_t x4, uint64_t x2)
+{ uint64_t x7 = x6 | x5;
+{ uint64_t x8 = x4 | x7;
+{ uint64_t x9 = x2 | x8;
+return x9;
+}}}
+
+inline void feadd(uint64_t* out, uint64_t x8, uint64_t x9, uint64_t x7, uint64_t x5, uint64_t x14, uint64_t x15, uint64_t x13, uint64_t x11)
+{ uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
+{ uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
+{ uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
+{ uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
+{ uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffffL, &x29);
+{ uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffff, &x32);
+{ uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0x0, &x35);
+{ uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xffffffff00000001L, &x38);
+{ uint64_t _; uint8_t x43 = _subborrow_u64(x39, x27, 0, &_);
+{ uint64_t x44 = cmovcq(x43, x38, x26);
+{ uint64_t x45 = cmovcq(x43, x35, x23);
+{ uint64_t x46 = cmovcq(x43, x32, x20);
+{ uint64_t x47 = cmovcq(x43, x29, x17);
+out[0] = x44;
+out[1] = x45;
+out[2] = x46;
+out[3] = x47;
+}}}}}}}}}}}}}
+
+inline void fesub(uint64_t* out, uint64_t x8, uint64_t x9, uint64_t x7, uint64_t x5, uint64_t x14, uint64_t x15, uint64_t x13, uint64_t x11)
+{ uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
+{ uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
+{ uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
+{ uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
+{ uint64_t x28 = (uint64_t) (x27 == 0 ? 0x0 : 0xffffffffffffffffL); // subborrow_u64(x27, 0, 0)
+{ uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x28 & 0xffffffffffffffffL, &x31);
+{ uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x28 & 0xffffffff, &x35);
+{ uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x23, 0x0, &x38);
+{ uint64_t x40; uint8_t _ = _addcarryx_u64(x39, x26, (x28 & 0xffffffff00000001L), &x40);
+out[0] = x40;
+out[1] = x38;
+out[2] = x35;
+out[3] = x31;
+}}}}}}}}}
+
+inline void feopp(uint64_t* out, uint64_t x5, uint64_t x6, uint64_t x4, uint64_t x2)
+{ uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
+{ uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
+{ uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
+{ uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
+{ uint64_t x19 = (uint64_t) (x18 == 0 ? 0x0 : 0xffffffffffffffffL); // subborrow
+{ uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x19 & 0xffffffffffffffffL, &x22);
+{ uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x19 & 0xffffffff, &x26);
+{ uint64_t x29; uint8_t x30 = _addcarryx_u64(x27, x14, 0x0, &x29);
+{ uint64_t x31; uint8_t _ = _addcarryx_u64(x30, x17, x19 & 0xffffffff00000001L, &x31);
+out[0] = x31;
+out[1] = x29;
+out[2] = x26;
+out[3] = x22;
+}}}}}}}}}
+
+inline void force_inline femul(uint64_t* out, uint64_t x8, uint64_t x9, uint64_t x7, uint64_t x5, uint64_t x14, uint64_t x15, uint64_t x13, uint64_t x11)
+{ uint64_t x17; uint64_t x18 = _mulx_u64(x5, x11, &x17);
+{ uint64_t x20; uint64_t x21 = _mulx_u64(x5, x13, &x20);
+{ uint64_t x23; uint64_t x24 = _mulx_u64(x5, x15, &x23);
+{ uint64_t x26; uint64_t x27 = _mulx_u64(x5, x14, &x26);
+{ uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
+{ uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
+{ uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
+{ uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
+{ uint64_t x41; uint64_t x42 = _mulx_u64(x17, 0xffffffffffffffffL, &x41);
+{ uint64_t x44; uint64_t x45 = _mulx_u64(x17, 0xffffffff, &x44);
+{ uint64_t x47; uint64_t x48 = _mulx_u64(x17, 0xffffffff00000001L, &x47);
+{ uint64_t x50; uint8_t x51 = _addcarryx_u64(0x0, x42, x44, &x50);
+{ uint64_t x53; uint8_t x54 = _addcarryx_u64(x51, x45, 0x0, &x53);
+{ uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, 0x0, x47, &x56);
+{ uint64_t x59; uint8_t _ = _addcarryx_u64(0x0, x57, x48, &x59);
+{ uint64_t _; uint8_t x63 = _addcarryx_u64(0x0, x17, x41, &_);
+{ uint64_t x65; uint8_t x66 = _addcarryx_u64(x63, x29, x50, &x65);
+{ uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x32, x53, &x68);
+{ uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x35, x56, &x71);
+{ uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x38, x59, &x74);
+{ uint64_t x77; uint64_t x78 = _mulx_u64(x7, x11, &x77);
+{ uint64_t x80; uint64_t x81 = _mulx_u64(x7, x13, &x80);
+{ uint64_t x83; uint64_t x84 = _mulx_u64(x7, x15, &x83);
+{ uint64_t x86; uint64_t x87 = _mulx_u64(x7, x14, &x86);
+{ uint64_t x89; uint8_t x90 = _addcarryx_u64(0x0, x78, x80, &x89);
+{ uint64_t x92; uint8_t x93 = _addcarryx_u64(x90, x81, x83, &x92);
+{ uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
+{ uint64_t x98; uint8_t _ = _addcarryx_u64(0x0, x96, x87, &x98);
+{ uint64_t x101; uint8_t x102 = _addcarryx_u64(0x0, x65, x77, &x101);
+{ uint64_t x104; uint8_t x105 = _addcarryx_u64(x102, x68, x89, &x104);
+{ uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
+{ uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
+{ uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x75, x98, &x113);
+{ uint64_t x116; uint64_t x117 = _mulx_u64(x101, 0xffffffffffffffffL, &x116);
+{ uint64_t x119; uint64_t x120 = _mulx_u64(x101, 0xffffffff, &x119);
+{ uint64_t x122; uint64_t x123 = _mulx_u64(x101, 0xffffffff00000001L, &x122);
+{ uint64_t x125; uint8_t x126 = _addcarryx_u64(0x0, x117, x119, &x125);
+{ uint64_t x128; uint8_t x129 = _addcarryx_u64(x126, x120, 0x0, &x128);
+{ uint64_t x131; uint8_t x132 = _addcarryx_u64(x129, 0x0, x122, &x131);
+{ uint64_t x134; uint8_t _ = _addcarryx_u64(0x0, x132, x123, &x134);
+{ uint64_t _; uint8_t x138 = _addcarryx_u64(0x0, x101, x116, &_);
+{ uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x104, x125, &x140);
+{ uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x107, x128, &x143);
+{ uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x110, x131, &x146);
+{ uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x113, x134, &x149);
+{ uint8_t x151 = x150 + x114;
+{ uint64_t x153; uint64_t x154 = _mulx_u64(x9, x11, &x153);
+{ uint64_t x156; uint64_t x157 = _mulx_u64(x9, x13, &x156);
+{ uint64_t x159; uint64_t x160 = _mulx_u64(x9, x15, &x159);
+{ uint64_t x162; uint64_t x163 = _mulx_u64(x9, x14, &x162);
+{ uint64_t x165; uint8_t x166 = _addcarryx_u64(0x0, x154, x156, &x165);
+{ uint64_t x168; uint8_t x169 = _addcarryx_u64(x166, x157, x159, &x168);
+{ uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x160, x162, &x171);
+{ uint64_t x174; uint8_t _ = _addcarryx_u64(0x0, x172, x163, &x174);
+{ uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x140, x153, &x177);
+{ uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x143, x165, &x180);
+{ uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x146, x168, &x183);
+{ uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
+{ uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x151, x174, &x189);
+{ uint64_t x192; uint64_t x193 = _mulx_u64(x177, 0xffffffffffffffffL, &x192);
+{ uint64_t x195; uint64_t x196 = _mulx_u64(x177, 0xffffffff, &x195);
+{ uint64_t x198; uint64_t x199 = _mulx_u64(x177, 0xffffffff00000001L, &x198);
+{ uint64_t x201; uint8_t x202 = _addcarryx_u64(0x0, x193, x195, &x201);
+{ uint64_t x204; uint8_t x205 = _addcarryx_u64(x202, x196, 0x0, &x204);
+{ uint64_t x207; uint8_t x208 = _addcarryx_u64(x205, 0x0, x198, &x207);
+{ uint64_t x210; uint8_t _ = _addcarryx_u64(0x0, x208, x199, &x210);
+{ uint64_t _; uint8_t x214 = _addcarryx_u64(0x0, x177, x192, &_);
+{ uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x180, x201, &x216);
+{ uint64_t x219; uint8_t x220 = _addcarryx_u64(x217, x183, x204, &x219);
+{ uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x186, x207, &x222);
+{ uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x189, x210, &x225);
+{ uint8_t x227 = x226 + x190;
+{ uint64_t x229; uint64_t x230 = _mulx_u64(x8, x11, &x229);
+{ uint64_t x232; uint64_t x233 = _mulx_u64(x8, x13, &x232);
+{ uint64_t x235; uint64_t x236 = _mulx_u64(x8, x15, &x235);
+{ uint64_t x238; uint64_t x239 = _mulx_u64(x8, x14, &x238);
+{ uint64_t x241; uint8_t x242 = _addcarryx_u64(0x0, x230, x232, &x241);
+{ uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x233, x235, &x244);
+{ uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x236, x238, &x247);
+{ uint64_t x250; uint8_t _ = _addcarryx_u64(0x0, x248, x239, &x250);
+{ uint64_t x253; uint8_t x254 = _addcarryx_u64(0x0, x216, x229, &x253);
+{ uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x219, x241, &x256);
+{ uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x222, x244, &x259);
+{ uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x225, x247, &x262);
+{ uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x227, x250, &x265);
+{ uint64_t x268; uint64_t x269 = _mulx_u64(x253, 0xffffffffffffffffL, &x268);
+{ uint64_t x271; uint64_t x272 = _mulx_u64(x253, 0xffffffff, &x271);
+{ uint64_t x274; uint64_t x275 = _mulx_u64(x253, 0xffffffff00000001L, &x274);
+{ uint64_t x277; uint8_t x278 = _addcarryx_u64(0x0, x269, x271, &x277);
+{ uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x272, 0x0, &x280);
+{ uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, 0x0, x274, &x283);
+{ uint64_t x286; uint8_t _ = _addcarryx_u64(0x0, x284, x275, &x286);
+{ uint64_t _; uint8_t x290 = _addcarryx_u64(0x0, x253, x268, &_);
+{ uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x256, x277, &x292);
+{ uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x259, x280, &x295);
+{ uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x262, x283, &x298);
+{ uint64_t x301; uint8_t x302 = _addcarryx_u64(x299, x265, x286, &x301);
+{ uint8_t x303 = x302 + x266;
+{ uint64_t x305; uint8_t x306 = _subborrow_u64(0x0, x292, 0xffffffffffffffffL, &x305);
+{ uint64_t x308; uint8_t x309 = _subborrow_u64(x306, x295, 0xffffffff, &x308);
+{ uint64_t x311; uint8_t x312 = _subborrow_u64(x309, x298, 0x0, &x311);
+{ uint64_t x314; uint8_t x315 = _subborrow_u64(x312, x301, 0xffffffff00000001L, &x314);
+{ uint64_t _; uint8_t x319 = _subborrow_u64(x315, x303, 0, &_);
+{ uint64_t x320 = cmovcq(x319, x314, x301);
+{ uint64_t x321 = cmovcq(x319, x311, x298);
+{ uint64_t x322 = cmovcq(x319, x308, x295);
+{ uint64_t x323 = cmovcq(x319, x305, x292);
+out[0] = x320;
+out[1] = x321;
+out[2] = x322;
+out[3] = x323;
+}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+
+inline void force_inline fesquare(uint64_t* out, uint64_t x8, uint64_t x9, uint64_t x7, uint64_t x5)
+{ uint64_t x14 = x8; uint64_t x15 = x9; uint64_t x13 = x7; uint64_t x11 = x5;
+{ uint64_t x17; uint64_t x18 = _mulx_u64(x5, x11, &x17);
+{ uint64_t x20; uint64_t x21 = _mulx_u64(x5, x13, &x20);
+{ uint64_t x23; uint64_t x24 = _mulx_u64(x5, x15, &x23);
+{ uint64_t x26; uint64_t x27 = _mulx_u64(x5, x14, &x26);
+{ uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
+{ uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
+{ uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
+{ uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
+{ uint64_t x41; uint64_t x42 = _mulx_u64(x17, 0xffffffffffffffffL, &x41);
+{ uint64_t x44; uint64_t x45 = _mulx_u64(x17, 0xffffffff, &x44);
+{ uint64_t x47; uint64_t x48 = _mulx_u64(x17, 0xffffffff00000001L, &x47);
+{ uint64_t x50; uint8_t x51 = _addcarryx_u64(0x0, x42, x44, &x50);
+{ uint64_t x53; uint8_t x54 = _addcarryx_u64(x51, x45, 0x0, &x53);
+{ uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, 0x0, x47, &x56);
+{ uint64_t x59; uint8_t _ = _addcarryx_u64(0x0, x57, x48, &x59);
+{ uint64_t _; uint8_t x63 = _addcarryx_u64(0x0, x17, x41, &_);
+{ uint64_t x65; uint8_t x66 = _addcarryx_u64(x63, x29, x50, &x65);
+{ uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x32, x53, &x68);
+{ uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x35, x56, &x71);
+{ uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x38, x59, &x74);
+{ uint64_t x77; uint64_t x78 = _mulx_u64(x7, x11, &x77);
+{ uint64_t x80; uint64_t x81 = _mulx_u64(x7, x13, &x80);
+{ uint64_t x83; uint64_t x84 = _mulx_u64(x7, x15, &x83);
+{ uint64_t x86; uint64_t x87 = _mulx_u64(x7, x14, &x86);
+{ uint64_t x89; uint8_t x90 = _addcarryx_u64(0x0, x78, x80, &x89);
+{ uint64_t x92; uint8_t x93 = _addcarryx_u64(x90, x81, x83, &x92);
+{ uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
+{ uint64_t x98; uint8_t _ = _addcarryx_u64(0x0, x96, x87, &x98);
+{ uint64_t x101; uint8_t x102 = _addcarryx_u64(0x0, x65, x77, &x101);
+{ uint64_t x104; uint8_t x105 = _addcarryx_u64(x102, x68, x89, &x104);
+{ uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
+{ uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
+{ uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x75, x98, &x113);
+{ uint64_t x116; uint64_t x117 = _mulx_u64(x101, 0xffffffffffffffffL, &x116);
+{ uint64_t x119; uint64_t x120 = _mulx_u64(x101, 0xffffffff, &x119);
+{ uint64_t x122; uint64_t x123 = _mulx_u64(x101, 0xffffffff00000001L, &x122);
+{ uint64_t x125; uint8_t x126 = _addcarryx_u64(0x0, x117, x119, &x125);
+{ uint64_t x128; uint8_t x129 = _addcarryx_u64(x126, x120, 0x0, &x128);
+{ uint64_t x131; uint8_t x132 = _addcarryx_u64(x129, 0x0, x122, &x131);
+{ uint64_t x134; uint8_t _ = _addcarryx_u64(0x0, x132, x123, &x134);
+{ uint64_t _; uint8_t x138 = _addcarryx_u64(0x0, x101, x116, &_);
+{ uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x104, x125, &x140);
+{ uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x107, x128, &x143);
+{ uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x110, x131, &x146);
+{ uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x113, x134, &x149);
+{ uint8_t x151 = x150 + x114;
+{ uint64_t x153; uint64_t x154 = _mulx_u64(x9, x11, &x153);
+{ uint64_t x156; uint64_t x157 = _mulx_u64(x9, x13, &x156);
+{ uint64_t x159; uint64_t x160 = _mulx_u64(x9, x15, &x159);
+{ uint64_t x162; uint64_t x163 = _mulx_u64(x9, x14, &x162);
+{ uint64_t x165; uint8_t x166 = _addcarryx_u64(0x0, x154, x156, &x165);
+{ uint64_t x168; uint8_t x169 = _addcarryx_u64(x166, x157, x159, &x168);
+{ uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x160, x162, &x171);
+{ uint64_t x174; uint8_t _ = _addcarryx_u64(0x0, x172, x163, &x174);
+{ uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x140, x153, &x177);
+{ uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x143, x165, &x180);
+{ uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x146, x168, &x183);
+{ uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
+{ uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x151, x174, &x189);
+{ uint64_t x192; uint64_t x193 = _mulx_u64(x177, 0xffffffffffffffffL, &x192);
+{ uint64_t x195; uint64_t x196 = _mulx_u64(x177, 0xffffffff, &x195);
+{ uint64_t x198; uint64_t x199 = _mulx_u64(x177, 0xffffffff00000001L, &x198);
+{ uint64_t x201; uint8_t x202 = _addcarryx_u64(0x0, x193, x195, &x201);
+{ uint64_t x204; uint8_t x205 = _addcarryx_u64(x202, x196, 0x0, &x204);
+{ uint64_t x207; uint8_t x208 = _addcarryx_u64(x205, 0x0, x198, &x207);
+{ uint64_t x210; uint8_t _ = _addcarryx_u64(0x0, x208, x199, &x210);
+{ uint64_t _; uint8_t x214 = _addcarryx_u64(0x0, x177, x192, &_);
+{ uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x180, x201, &x216);
+{ uint64_t x219; uint8_t x220 = _addcarryx_u64(x217, x183, x204, &x219);
+{ uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x186, x207, &x222);
+{ uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x189, x210, &x225);
+{ uint8_t x227 = x226 + x190;
+{ uint64_t x229; uint64_t x230 = _mulx_u64(x8, x11, &x229);
+{ uint64_t x232; uint64_t x233 = _mulx_u64(x8, x13, &x232);
+{ uint64_t x235; uint64_t x236 = _mulx_u64(x8, x15, &x235);
+{ uint64_t x238; uint64_t x239 = _mulx_u64(x8, x14, &x238);
+{ uint64_t x241; uint8_t x242 = _addcarryx_u64(0x0, x230, x232, &x241);
+{ uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x233, x235, &x244);
+{ uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x236, x238, &x247);
+{ uint64_t x250; uint8_t _ = _addcarryx_u64(0x0, x248, x239, &x250);
+{ uint64_t x253; uint8_t x254 = _addcarryx_u64(0x0, x216, x229, &x253);
+{ uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x219, x241, &x256);
+{ uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x222, x244, &x259);
+{ uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x225, x247, &x262);
+{ uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x227, x250, &x265);
+{ uint64_t x268; uint64_t x269 = _mulx_u64(x253, 0xffffffffffffffffL, &x268);
+{ uint64_t x271; uint64_t x272 = _mulx_u64(x253, 0xffffffff, &x271);
+{ uint64_t x274; uint64_t x275 = _mulx_u64(x253, 0xffffffff00000001L, &x274);
+{ uint64_t x277; uint8_t x278 = _addcarryx_u64(0x0, x269, x271, &x277);
+{ uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x272, 0x0, &x280);
+{ uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, 0x0, x274, &x283);
+{ uint64_t x286; uint8_t _ = _addcarryx_u64(0x0, x284, x275, &x286);
+{ uint64_t _; uint8_t x290 = _addcarryx_u64(0x0, x253, x268, &_);
+{ uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x256, x277, &x292);
+{ uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x259, x280, &x295);
+{ uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x262, x283, &x298);
+{ uint64_t x301; uint8_t x302 = _addcarryx_u64(x299, x265, x286, &x301);
+{ uint8_t x303 = x302 + x266;
+{ uint64_t x305; uint8_t x306 = _subborrow_u64(0x0, x292, 0xffffffffffffffffL, &x305);
+{ uint64_t x308; uint8_t x309 = _subborrow_u64(x306, x295, 0xffffffff, &x308);
+{ uint64_t x311; uint8_t x312 = _subborrow_u64(x309, x298, 0x0, &x311);
+{ uint64_t x314; uint8_t x315 = _subborrow_u64(x312, x301, 0xffffffff00000001L, &x314);
+{ uint64_t _; uint8_t x319 = _subborrow_u64(x315, x303, 0, &_);
+{ uint64_t x320 = cmovcq(x319, x314, x301);
+{ uint64_t x321 = cmovcq(x319, x311, x298);
+{ uint64_t x322 = cmovcq(x319, x308, x295);
+{ uint64_t x323 = cmovcq(x319, x305, x292);
+out[0] = x320;
+out[1] = x321;
+out[2] = x322;
+out[3] = x323;
+}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+
+
+void p256_jacobian_add_affine(
+ uint64_t P1[12],
+ uint64_t P2[8],
+ uint64_t P3[12]
+) {
+ uint64_t* X1 = P1;
+ uint64_t* Y1 = P1+4;
+ uint64_t* Z1 = P1+8;
+ uint64_t* X2 = P2;
+ uint64_t* Y2 = P2+4;
+ uint64_t* X3 = P3;
+ uint64_t* Y3 = P3+4;
+ uint64_t* Z3 = P3+8;
+ uint64_t ZZ[4] = {0}; fesquare(ZZ, Z1[3], Z1[2], Z1[1], Z1[0]);
+ uint64_t P1z = !fenonzero(Z1[3], Z1[2], Z1[1], Z1[0]);
+ uint64_t U2[4] = {0}; femul(ZZ, ZZ[3], ZZ[2], ZZ[1], ZZ[0], X2[3], X2[2], X2[1], X2[0]);
+ uint64_t X2nz = fenonzero(X2[3], X2[2], X2[1], X2[0]);
+ uint64_t ZZZ[4] = {0}; femul(ZZZ, ZZ[3], ZZ[2], ZZ[1], ZZ[0], Z1[3], Z1[2], Z1[1], Z1[0]);
+ uint64_t H[4] = {0}; fesub(H, U2[3], U2[2], U2[1], U2[0], X1[3], X1[2], X1[1], X1[0]);
+ femul(Z3, Z1[3], Z1[2], Z1[1], Z1[0], H[3], H[2], H[1], H[0]);
+ uint64_t P2z = !(X2nz | fenonzero(Y2[3], Y2[2], Y2[1], Y2[0]));
+ uint64_t S2[4] = {0}; femul(S2, ZZZ[3], ZZZ[2], ZZZ[1], ZZZ[0], Y2[3], Y2[2], Y2[1], Y2[0]);
+ uint64_t R[4] = {0}; fesub(R, S2[3], S2[2], S2[1], S2[0], Y1[3], Y1[2], Y1[1], Y1[0]);
+ uint64_t HH[4] = {0}; fesquare(HH, H[3], H[2], H[1], H[0]);
+ uint64_t RR[4] = {0}; fesquare(RR, R[3], R[2], R[1], R[0]);
+ uint64_t HHH[4] = {0}; femul(HHH, HH[3], HH[2], HH[1], HH[0], H[3], H[2], H[1], H[0]);
+ Z3[3] = cmovcq(P1z, Z3[3], 0x0000000000000001);
+ Z3[2] = cmovcq(P1z, Z3[2], 0xffffffff00000000);
+ Z3[1] = cmovcq(P1z, Z3[1], 0xffffffffffffffff);
+ Z3[0] = cmovcq(P1z, Z3[0], 0xffffffffffffffff);
+ Z3[3] = cmovcq(P2z, Z3[3], Z1[3]);
+ Z3[2] = cmovcq(P2z, Z3[2], Z1[2]);
+ Z3[1] = cmovcq(P2z, Z3[1], Z1[1]);
+ Z3[0] = cmovcq(P2z, Z3[0], Z1[0]);
+ uint64_t HHX[4] = {0}; femul(HH, HH[3], HH[2], HH[1], HH[0], X1[3], X1[2], X1[1], X1[0]);
+ uint64_t T10[4] = {0}; feadd(T10, HHX[3], HHX[2], HHX[1], HHX[0], HHX[3], HHX[2], HHX[1], HHX[0]);
+ uint64_t E4[4] = {0}; fesub(E4, RR[3], RR[2], RR[1], RR[0], T10[3], T10[2], T10[1], T10[0]);
+ fesub(X3, E4[3], E4[2], E4[1], E4[0], HHH[3], HHH[2], HHH[1], HHH[0]);
+ X3[3] = cmovcq(P1z, X3[3], X2[3]);
+ X3[2] = cmovcq(P1z, X3[2], X2[2]);
+ X3[1] = cmovcq(P1z, X3[1], X2[1]);
+ X3[0] = cmovcq(P1z, X3[0], X2[0]);
+ X3[3] = cmovcq(P2z, X3[3], X1[3]);
+ X3[2] = cmovcq(P2z, X3[2], X1[2]);
+ X3[1] = cmovcq(P2z, X3[1], X1[1]);
+ X3[0] = cmovcq(P2z, X3[0], X1[0]);
+ uint64_t T13[4] = {0}; femul(T13, HHH[3], HHH[2], HHH[1], HHH[0], Y1[3], Y1[2], Y1[1], Y1[0]);
+ uint64_t T11[4] = {0}; fesub(T11, HHX[3], HHX[2], HHX[1], HHX[0], X3[3], X3[2], X3[1], X3[0]);
+ uint64_t T12[4] = {0}; femul(T12, T11[3], T11[2], T11[1], T11[0], R[3], R[2], R[1], R[0]);
+ fesub(Y3, T12[3], T12[2], T12[1], T12[0], T13[3], T13[2], T13[1], T13[0]);
+ Y3[3] = cmovcq(P1z, Y3[3], Y2[3]);
+ Y3[2] = cmovcq(P1z, Y3[2], Y2[2]);
+ Y3[1] = cmovcq(P1z, Y3[1], Y2[1]);
+ Y3[0] = cmovcq(P1z, Y3[0], Y2[0]);
+ Y3[3] = cmovcq(P2z, Y3[3], Y1[3]);
+ Y3[2] = cmovcq(P2z, Y3[2], Y1[2]);
+ Y3[1] = cmovcq(P2z, Y3[1], Y1[1]);
+ Y3[0] = cmovcq(P2z, Y3[0], Y1[0]);
+}
diff --git a/src/Specific/X25519/C64/measurements.txt b/src/Specific/X25519/C64/measurements.txt
index 03bb864fc..3782c59c5 100644
--- a/src/Specific/X25519/C64/measurements.txt
+++ b/src/Specific/X25519/C64/measurements.txt
@@ -1,4 +1,4 @@
156081 ashryn-ht-tb-ac-broadwell 2.78ghz 7.1.1 83ddc573
+168628 ashryn-noht-notb-noac-broadwell 2.60ghz 7.1.1 cac291e0
174300 ashryn-noht-notb-ac-broadwell 2.50ghz 7.1.1 4dc08623
-174316 ashryn-noht-notb-noac-broadwell 2.50ghz 7.1.1 fe5b5b3b
187992 jgross-Leopard-WS-ht-tb-nops-haswell 3.70ghz 5.4.0 19a7001