diff options
-rw-r--r-- | Makefile | 26 | ||||
-rw-r--r-- | _CoqProject | 34 | ||||
-rwxr-xr-x | capture.sh | 2 | ||||
-rwxr-xr-x | extract-function.sh | 1 | ||||
-rw-r--r-- | liblow/cmovznz.c | 10 | ||||
-rw-r--r-- | liblow/liblow.h | 2 | ||||
-rw-r--r-- | measure.c | 18 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.log | 19 | ||||
-rwxr-xr-x | src/Specific/NISTP256/AMD64/compiler.sh | 2 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/feadd.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Add.v) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/feaddDisplay.log (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_AddDisplay.log) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/feaddDisplay.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_AddDisplay.v) | 2 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/femul.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.v) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/femulDisplay.log (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256Display.log) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/femulDisplay.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256Display.v) | 2 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/fenz.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Nonzero.v) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/fenzDisplay.log (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_NonzeroDisplay.log) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/fenzDisplay.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_NonzeroDisplay.v) | 2 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/feopp.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Opp.v) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/feoppDisplay.log | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/feoppDisplay.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.v) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/fesub.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Sub.v) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/fesubDisplay.log (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_SubDisplay.log) | 0 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/fesubDisplay.v (renamed from src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_SubDisplay.v) | 2 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s | 6031 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/icc/measurements.txt | 2 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/measurements.txt | 2 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/p256.h | 7 | ||||
-rw-r--r-- | src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c | 363 | ||||
-rw-r--r-- | src/Specific/X25519/C64/measurements.txt | 2 | ||||
-rw-r--r-- | third_party/openssl-nistp256c64/measurements.txt | 1 |
31 files changed, 3088 insertions, 3442 deletions
@@ -151,40 +151,40 @@ $(DISPLAY_JAVA_VO:.vo=.log) : %JavaDisplay.log : %.vo %JavaDisplay.v src/Compile DISPLAY_X25519_C64_VO := $(filter src/Specific/X25519/C64/%,$(DISPLAY_NON_JAVA_VO)) src/Specific/X25519/C64/measure: src/Specific/X25519/C64/compiler.sh measure.c $(DISPLAY_X25519_C64_VO:Display.vo=.c) $(DISPLAY_X25519_C64_VO:Display.vo=.h) src/Specific/X25519/C64/scalarmult.c - src/Specific/X25519/C64/compiler.sh -o src/Specific/X25519/C64/measure -I src/Specific/X25519/C64/ measure.c $(DISPLAY_X25519_C64_VO:Display.vo=.c) src/Specific/X25519/C64/scalarmult.c -D TIMINGS=2047 -D UUT=crypto_scalarmult_bench + src/Specific/X25519/C64/compiler.sh -o src/Specific/X25519/C64/measure -I liblow -I src/Specific/X25519/C64/ measure.c $(DISPLAY_X25519_C64_VO:Display.vo=.c) src/Specific/X25519/C64/scalarmult.c -D UUT=crypto_scalarmult_bench src/Specific/X25519/C64/measurements.txt: src/Specific/X25519/C64/measure capture.sh etc/machine.sh etc/freq.sh - ./capture.sh src/Specific/X25519/C64 + ./capture.sh src/Specific/X25519/C64 2047 third_party/openssl-curve25519/measure: third_party/openssl-curve25519/compiler.sh third_party/openssl-curve25519/crypto_scalarmult_bench.c third_party/openssl-curve25519/ec_curve25519.c third_party/openssl-curve25519/ec_curve25519.h - third_party/openssl-curve25519/compiler.sh -o third_party/openssl-curve25519/measure measure.c third_party/openssl-curve25519/crypto_scalarmult_bench.c third_party/openssl-curve25519/ec_curve25519.c -I third_party/openssl-curve25519 -D TIMINGS=2047 -D UUT=crypto_scalarmult_bench + third_party/openssl-curve25519/compiler.sh -o third_party/openssl-curve25519/measure measure.c third_party/openssl-curve25519/crypto_scalarmult_bench.c third_party/openssl-curve25519/ec_curve25519.c -I liblow -I third_party/openssl-curve25519 -D UUT=crypto_scalarmult_bench third_party/openssl-curve25519/measurements.txt: third_party/openssl-curve25519/measure - ./capture.sh third_party/openssl-curve25519 + ./capture.sh third_party/openssl-curve25519 2047 third_party/openssl-nistz256/measure: third_party/openssl-nistz256/compiler.sh third_party/openssl-nistz256/bench_madd.c third_party/openssl-nistz256/cpu_intel.c third_party/openssl-nistz256/ecp_nistz256-x86_64.s third_party/openssl-nistz256/nistz256.h - third_party/openssl-nistz256/compiler.sh -o third_party/openssl-nistz256/measure measure.c third_party/openssl-nistz256/bench_madd.c third_party/openssl-nistz256/cpu_intel.c third_party/openssl-nistz256/ecp_nistz256-x86_64.s src/Specific/X25519/C64/scalarmult.c -I third_party/openssl-nistz256 -D TIMINGS=2047 -D UUT=bench_madd + third_party/openssl-nistz256/compiler.sh -o third_party/openssl-nistz256/measure measure.c third_party/openssl-nistz256/bench_madd.c third_party/openssl-nistz256/cpu_intel.c third_party/openssl-nistz256/ecp_nistz256-x86_64.s src/Specific/X25519/C64/scalarmult.c -I liblow -I third_party/openssl-nistz256 -D UUT=bench_madd third_party/openssl-nistz256/measurements.txt: third_party/openssl-nistz256/measure - ./capture.sh third_party/openssl-nistz256 + ./capture.sh third_party/openssl-nistz256 65535 third_party/openssl-nistp256c64/measure: third_party/openssl-nistp256c64/compiler.sh third_party/openssl-nistp256c64/bench_madd.c third_party/openssl-nistp256c64/ecp_nistp256.c third_party/openssl-nistp256c64/ecp_nistp256.h - third_party/openssl-nistp256c64/compiler.sh -o third_party/openssl-nistp256c64/measure measure.c third_party/openssl-nistp256c64/bench_madd.c third_party/openssl-nistp256c64/ecp_nistp256.c third_party/openssl-nistp256c64/ecp_nistp256.h -I third_party/openssl-nistp256c64 -D TIMINGS=2047 -D UUT=bench_madd + third_party/openssl-nistp256c64/compiler.sh -o third_party/openssl-nistp256c64/measure measure.c third_party/openssl-nistp256c64/bench_madd.c third_party/openssl-nistp256c64/ecp_nistp256.c third_party/openssl-nistp256c64/ecp_nistp256.h -I liblow -I third_party/openssl-nistp256c64 -D UUT=bench_madd third_party/openssl-nistp256c64/measurements.txt: third_party/openssl-nistp256c64/measure - ./capture.sh third_party/openssl-nistp256c64 + ./capture.sh third_party/openssl-nistp256c64 65535 -src/Specific/NISTP256/AMD64/measure: src/Specific/NISTP256/AMD64/compiler.sh src/Specific/NISTP256/AMD64/p256.h src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c src/Specific/NISTP256/AMD64/bench_madd.c - src/Specific/NISTP256/AMD64/compiler.sh -o src/Specific/NISTP256/AMD64/measure src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c src/Specific/NISTP256/AMD64/bench_madd.c -I src/Specific/NISTP256/AMD64 measure.c -D TIMINGS=2047 -D UUT=bench_madd +src/Specific/NISTP256/AMD64/measure: src/Specific/NISTP256/AMD64/bench_madd.c src/Specific/NISTP256/AMD64/feadd.c src/Specific/NISTP256/AMD64/femul.c src/Specific/NISTP256/AMD64/fenz.c src/Specific/NISTP256/AMD64/feopp.c src/Specific/NISTP256/AMD64/fesub.c src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c liblow/cmovznz.c measure.c src/Specific/NISTP256/AMD64/compiler.sh measure.c + src/Specific/NISTP256/AMD64/compiler.sh -o src/Specific/NISTP256/AMD64/measure src/Specific/NISTP256/AMD64/*.c -I src/Specific/NISTP256/AMD64/ measure.c -D UUT=bench_madd -I liblow liblow/*.c src/Specific/NISTP256/AMD64/measurements.txt: src/Specific/NISTP256/AMD64/measure - ./capture.sh src/Specific/NISTP256/AMD64 + ./capture.sh src/Specific/NISTP256/AMD64 65535 src/Specific/NISTP256/AMD64/icc/measure: src/Specific/NISTP256/AMD64/compiler.sh src/Specific/NISTP256/AMD64/p256.h src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s src/Specific/NISTP256/AMD64/bench_madd.c - src/Specific/NISTP256/AMD64/icc/compiler.sh -o src/Specific/NISTP256/AMD64/icc/measure src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s src/Specific/NISTP256/AMD64/bench_madd.c -I src/Specific/NISTP256/AMD64 measure.c -D TIMINGS=2047 -D UUT=bench_madd + src/Specific/NISTP256/AMD64/icc/compiler.sh -o src/Specific/NISTP256/AMD64/icc/measure src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s src/Specific/NISTP256/AMD64/bench_madd.c -I liblow -I src/Specific/NISTP256/AMD64 measure.c -D UUT=bench_madd src/Specific/NISTP256/AMD64/icc/measurements.txt: src/Specific/NISTP256/AMD64/icc/measure - ./capture.sh src/Specific/NISTP256/AMD64/icc + ./capture.sh src/Specific/NISTP256/AMD64/icc 65535 bench: src/Specific/X25519/C64/measurements.txt third_party/openssl-curve25519/measurements.txt src/Specific/NISTP256/AMD64/measurements.txt src/Specific/NISTP256/AMD64/icc/measurements.txt third_party/openssl-nistz256/measurements.txt third_party/openssl-nistp256c64/measurements.txt head -999999 $? diff --git a/_CoqProject b/_CoqProject index d46c94a1f..aadb4a93d 100644 --- a/_CoqProject +++ b/_CoqProject @@ -18,13 +18,6 @@ src/Arithmetic/Karatsuba.v src/Arithmetic/ModularArithmeticPre.v src/Arithmetic/ModularArithmeticTheorems.v src/Arithmetic/PrimeFieldTheorems.v -src/Arithmetic/Saturated/AddSub.v -src/Arithmetic/Saturated/Core.v -src/Arithmetic/Saturated/Freeze.v -src/Arithmetic/Saturated/MontgomeryAPI.v -src/Arithmetic/Saturated/MulSplit.v -src/Arithmetic/Saturated/UniformWeight.v -src/Arithmetic/Saturated/Wrappers.v src/Arithmetic/BarrettReduction/Generalized.v src/Arithmetic/BarrettReduction/HAC.v src/Arithmetic/BarrettReduction/Wikipedia.v @@ -36,6 +29,13 @@ src/Arithmetic/MontgomeryReduction/WordByWord/Abstract/Definition.v src/Arithmetic/MontgomeryReduction/WordByWord/Abstract/Proofs.v src/Arithmetic/MontgomeryReduction/WordByWord/Abstract/Dependent/Definition.v src/Arithmetic/MontgomeryReduction/WordByWord/Abstract/Dependent/Proofs.v +src/Arithmetic/Saturated/AddSub.v +src/Arithmetic/Saturated/Core.v +src/Arithmetic/Saturated/Freeze.v +src/Arithmetic/Saturated/MontgomeryAPI.v +src/Arithmetic/Saturated/MulSplit.v +src/Arithmetic/Saturated/UniformWeight.v +src/Arithmetic/Saturated/Wrappers.v src/Compilers/CommonSubexpressionElimination.v src/Compilers/CommonSubexpressionEliminationDenote.v src/Compilers/CommonSubexpressionEliminationInterp.v @@ -246,17 +246,17 @@ src/Specific/IntegrationTestSubDisplay.v src/Specific/IntegrationTestTemporaryMiscCommon.v src/Specific/Karatsuba.v src/Specific/MontgomeryP256_128.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256Display.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Add.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_AddDisplay.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Nonzero.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_NonzeroDisplay.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Opp.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Sub.v -src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_SubDisplay.v src/Specific/NISTP256/AMD64/MontgomeryP256.v +src/Specific/NISTP256/AMD64/feadd.v +src/Specific/NISTP256/AMD64/feaddDisplay.v +src/Specific/NISTP256/AMD64/femul.v +src/Specific/NISTP256/AMD64/femulDisplay.v +src/Specific/NISTP256/AMD64/fenz.v +src/Specific/NISTP256/AMD64/fenzDisplay.v +src/Specific/NISTP256/AMD64/feopp.v +src/Specific/NISTP256/AMD64/feoppDisplay.v +src/Specific/NISTP256/AMD64/fesub.v +src/Specific/NISTP256/AMD64/fesubDisplay.v src/Specific/NISTP256/FancyMachine256/Barrett.v src/Specific/NISTP256/FancyMachine256/Core.v src/Specific/NISTP256/FancyMachine256/Montgomery.v diff --git a/capture.sh b/capture.sh index 123058628..868cc4384 100755 --- a/capture.sh +++ b/capture.sh @@ -4,7 +4,7 @@ set -eu machine=$(etc/machine.sh) freq=$(etc/freq.sh) compiler=$($1/compiler.sh -dumpversion) -measurement=$($1/measure | (LC_ALL=C sort -n || true) | head -1024 | tail -1) +measurement=$($1/measure $2 | (LC_ALL=C sort -n || true) | head "-$(($2/2))" | tail -1) revision=$(git rev-parse --short HEAD) ( diff --git a/extract-function.sh b/extract-function.sh index dc967070b..c4345674f 100755 --- a/extract-function.sh +++ b/extract-function.sh @@ -17,6 +17,7 @@ cat <<EOF #include <stdint.h> #include <stdbool.h> #include <x86intrin.h> +#include "liblow.h" #include "$funcname.h" diff --git a/liblow/cmovznz.c b/liblow/cmovznz.c new file mode 100644 index 000000000..8533ade99 --- /dev/null +++ b/liblow/cmovznz.c @@ -0,0 +1,10 @@ +#include <stdint.h> +#include "liblow.h" +uint64_t cmovznz(uint64_t t, uint64_t z, uint64_t nz) { + asm ("testq %1, %1;" "\n" + "\t" "cmovnzq %3, %0;" + :"=r"(z) + :"r"(t), "0"(z), "r"(nz) + ); + return z; +} diff --git a/liblow/liblow.h b/liblow/liblow.h new file mode 100644 index 000000000..a8af0f52f --- /dev/null +++ b/liblow/liblow.h @@ -0,0 +1,2 @@ +#include <stdint.h> +uint64_t cmovznz(uint64_t t, uint64_t z, uint64_t nz); @@ -85,24 +85,28 @@ void limits() void UUT(unsigned char*); -void measure(void) +void measure(int n) { unsigned char *buf = aligned_alloc(64, 1024); - static long long cycles[TIMINGS + 1]; + long long* cycles = calloc(n + 1, sizeof(long long)); - for (int i = 0;i <= TIMINGS;++i) { + for (int i = 0;i <= n;++i) { cycles[i] = cpucycles(); UUT(buf); } - for (int i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i]; - for (int i = 0;i < TIMINGS;++i) printf("%lld\n", cycles[i]); + for (int i = 0;i < n;++i) cycles[i] = cycles[i + 1] - cycles[i]; + for (int i = 0;i < n;++i) printf("%lld\n", cycles[i]); __asm__ __volatile__("" :: "m" (buf)); // do not optimize buf away + free(cycles); } -int main() +int main(int argc, char** argv) { + int n = 0; + if (argc != 2) return 111; + sscanf(argv[1], "%d", &n); limits(); - measure(); + measure(n); return 0; } diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.log b/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.log deleted file mode 100644 index 211b2b863..000000000 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.log +++ /dev/null @@ -1,19 +0,0 @@ -λ x : word64 * word64 * word64 * word64, -Interp-η -(λ var : Syntax.base_type → Type, - λ '(x5, x6, x4, x2)%core, - uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2); - uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4); - uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6); - uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5); - uint64_t x19 = (uint64_t)cmovznz(x18, 0x0, 0xffffffffffffffffL); - uint64_t x20 = x19 & 0xffffffffffffffffL; - uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20); - uint64_t x24 = x19 & 0xffffffff; - uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24); - uint64_t x29, uint8_t x30 = addcarryx_u64(x27, x14, 0x0); - uint64_t x31 = x19 & 0xffffffff00000001L; - uint64_t x33, uint8_t _ = addcarryx_u64(x30, x17, x31); - (Return x33, Return x29, Return x26, Return x22)) -x - : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t) diff --git a/src/Specific/NISTP256/AMD64/compiler.sh b/src/Specific/NISTP256/AMD64/compiler.sh index e64df574a..90136bfbe 100755 --- a/src/Specific/NISTP256/AMD64/compiler.sh +++ b/src/Specific/NISTP256/AMD64/compiler.sh @@ -1,4 +1,4 @@ #!/bin/sh set -eu -gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes $@ +gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing $@ diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Add.v b/src/Specific/NISTP256/AMD64/feadd.v index 1ea0fbc35..1ea0fbc35 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Add.v +++ b/src/Specific/NISTP256/AMD64/feadd.v diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_AddDisplay.log b/src/Specific/NISTP256/AMD64/feaddDisplay.log index ba7a2f50d..ba7a2f50d 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_AddDisplay.log +++ b/src/Specific/NISTP256/AMD64/feaddDisplay.log diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_AddDisplay.v b/src/Specific/NISTP256/AMD64/feaddDisplay.v index 505b77a40..452044402 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_AddDisplay.v +++ b/src/Specific/NISTP256/AMD64/feaddDisplay.v @@ -1,4 +1,4 @@ -Require Import Crypto.Specific.NISTP256.AMD64.IntegrationTestMontgomeryP256_Add. +Require Import Crypto.Specific.NISTP256.AMD64.feadd. Require Import Crypto.Specific.IntegrationTestDisplayCommon. Check display add. diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.v b/src/Specific/NISTP256/AMD64/femul.v index d600869bd..d600869bd 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256.v +++ b/src/Specific/NISTP256/AMD64/femul.v diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256Display.log b/src/Specific/NISTP256/AMD64/femulDisplay.log index 982d44aaf..982d44aaf 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256Display.log +++ b/src/Specific/NISTP256/AMD64/femulDisplay.log diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256Display.v b/src/Specific/NISTP256/AMD64/femulDisplay.v index 590879c0c..f47c0ba06 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256Display.v +++ b/src/Specific/NISTP256/AMD64/femulDisplay.v @@ -1,4 +1,4 @@ -Require Import Crypto.Specific.NISTP256.AMD64.IntegrationTestMontgomeryP256. +Require Import Crypto.Specific.NISTP256.AMD64.femul. Require Import Crypto.Specific.IntegrationTestDisplayCommon. Check display mul. diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Nonzero.v b/src/Specific/NISTP256/AMD64/fenz.v index cfea6e957..cfea6e957 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Nonzero.v +++ b/src/Specific/NISTP256/AMD64/fenz.v diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_NonzeroDisplay.log b/src/Specific/NISTP256/AMD64/fenzDisplay.log index 399df24d4..399df24d4 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_NonzeroDisplay.log +++ b/src/Specific/NISTP256/AMD64/fenzDisplay.log diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_NonzeroDisplay.v b/src/Specific/NISTP256/AMD64/fenzDisplay.v index c56e9a92d..c4119449f 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_NonzeroDisplay.v +++ b/src/Specific/NISTP256/AMD64/fenzDisplay.v @@ -1,4 +1,4 @@ -Require Import Crypto.Specific.NISTP256.AMD64.IntegrationTestMontgomeryP256_Nonzero. +Require Import Crypto.Specific.NISTP256.AMD64.fenz. Require Import Crypto.Specific.IntegrationTestDisplayCommon. Check display nonzero. diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Opp.v b/src/Specific/NISTP256/AMD64/feopp.v index ef4ea6aa6..ef4ea6aa6 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Opp.v +++ b/src/Specific/NISTP256/AMD64/feopp.v diff --git a/src/Specific/NISTP256/AMD64/feoppDisplay.log b/src/Specific/NISTP256/AMD64/feoppDisplay.log new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/src/Specific/NISTP256/AMD64/feoppDisplay.log diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.v b/src/Specific/NISTP256/AMD64/feoppDisplay.v index af0987565..af0987565 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_OppDisplay.v +++ b/src/Specific/NISTP256/AMD64/feoppDisplay.v diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Sub.v b/src/Specific/NISTP256/AMD64/fesub.v index d01471804..d01471804 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_Sub.v +++ b/src/Specific/NISTP256/AMD64/fesub.v diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_SubDisplay.log b/src/Specific/NISTP256/AMD64/fesubDisplay.log index eb4289fd2..eb4289fd2 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_SubDisplay.log +++ b/src/Specific/NISTP256/AMD64/fesubDisplay.log diff --git a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_SubDisplay.v b/src/Specific/NISTP256/AMD64/fesubDisplay.v index a4c25bb05..0f771869c 100644 --- a/src/Specific/NISTP256/AMD64/IntegrationTestMontgomeryP256_SubDisplay.v +++ b/src/Specific/NISTP256/AMD64/fesubDisplay.v @@ -1,4 +1,4 @@ -Require Import Crypto.Specific.NISTP256.AMD64.IntegrationTestMontgomeryP256_Sub. +Require Import Crypto.Specific.NISTP256.AMD64.fesub. Require Import Crypto.Specific.IntegrationTestDisplayCommon. Check display sub. 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 index 08822f667..8dc77ca47 100644 --- a/src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s +++ b/src/Specific/NISTP256/AMD64/icc/icc17_p256_jacobian_add_affine.s @@ -3,3057 +3,2984 @@ .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 + push rbx #187.3 + mov rbx, rsp #187.3 + and rsp, -32 #187.3 + push rbp #187.3 + push rbp #187.3 + mov rbp, QWORD PTR [8+rbx] #187.3 + mov QWORD PTR [8+rsp], rbp #187.3 + mov rbp, rsp #187.3 + push r12 #187.3 + push r13 #187.3 + push r14 #187.3 + push r15 #187.3 + sub rsp, 304 #187.3 + vpxor ymm0, ymm0, ymm0 #196.20 + mov QWORD PTR [-104+rbp], rdx #187.3[spill] + mov QWORD PTR [-88+rbp], rsi #187.3[spill] + mov QWORD PTR [-96+rbp], rdi #187.3[spill] + vmovups YMMWORD PTR [-240+rbp], ymm0 #196.20 + xor r13d, r13d #42.32 + xor eax, eax #42.32 + xor r9d, r9d #42.32 + mov rdx, QWORD PTR [64+rsi] #38.33 + mulx r12, r15, QWORD PTR [64+rsi] #38.33 + mulx r10, rdi, QWORD PTR [72+rsi] #39.33 + adcx r15, r10 #42.32 + mov r10, -1 #46.33 + mulx r14, r8, QWORD PTR [80+rsi] #40.33 + adcx rdi, r14 #43.32 + mov r14, 0x0ffffffff #47.33 + mulx rcx, r11, QWORD PTR [88+rsi] #41.33 + mov esi, 0 #42.32 + adcx r8, rcx #44.32 + setb r13b #44.32 + mov rdx, r12 #46.33 + adox eax, esi #45.30 + adox r13, r11 #45.30 + mulx rax, r11, r10 #46.33 + mov r10, 0xffffffff00000001 #48.33 + seto r9b #45.30 + clc #49.32 + mulx r9, rcx, r14 #47.33 + adcx r11, r9 #49.32 + mulx r14, r9, r10 #48.33 + mov r10d, 0 #50.32 + adcx rcx, r10 #50.32 + mov edx, esi #52.30 + adcx r14, r10 #51.32 + mov r10d, esi #51.32 + setb r10b #51.32 + adox edx, esi #52.30 + adox r10, r9 #52.30 + clc #53.30 + adcx r12, rax #53.30 + adcx r15, r11 #54.32 + adcx rdi, rcx #55.32 + mov ecx, esi #57.32 + adcx r8, r14 #56.32 + mov r14, QWORD PTR [-88+rbp] #58.33[spill] + adcx r13, r10 #57.32 + mov rdx, QWORD PTR [72+r14] #58.33 + setb cl #57.32 + mov QWORD PTR [-304+rbp], r13 #57.32[spill] + mov QWORD PTR [-296+rbp], rcx #70.34[spill] + mulx r11, r13, QWORD PTR [64+r14] #58.33 + mulx rcx, r12, QWORD PTR [72+r14] #59.33 + mulx rax, r10, QWORD PTR [80+r14] #60.33 + mulx rdx, r9, QWORD PTR [88+r14] #61.33 + mov r14d, esi #62.32 + adox r14d, esi #62.32 + adox r13, rcx #62.32 + mov ecx, esi #64.32 + adox r12, rax #63.32 + adox r10, rdx #64.32 + seto cl #64.32 + clc #65.30 + adcx rcx, r9 #65.30 + mov r9d, esi #66.34 + adox r9d, esi #66.34 + mov rax, 0x0ffffffff #72.35 + mov r9, QWORD PTR [-304+rbp] #69.34[spill] + adox r15, r11 #66.34 + mov rdx, r15 #71.35 + adox rdi, r13 #67.34 + mov r13, QWORD PTR [-296+rbp] #70.34[spill] + adox r8, r12 #68.34 + mov r12d, esi #70.34 + adox r9, r10 #69.34 + mulx r10, r14, rax #72.35 + mov eax, 0 #75.34 + adox r13, rcx #70.34 + mov rcx, -1 #71.35 + seto r12b #70.34 + clc #74.34 + mov DWORD PTR [-288+rbp], r12d #70.34[spill] + mulx r12, r11, rcx #71.35 + mov rcx, 0xffffffff00000001 #73.35 + adcx r11, r10 #74.34 + mulx r10, rcx, rcx #73.35 + mov edx, esi #77.31 + adcx r14, rax #75.34 + adcx r10, rax #76.34 + mov eax, esi #76.34 + setb al #76.34 + adox edx, esi #77.31 + adox rax, rcx #77.31 + clc #78.31 + mov rcx, QWORD PTR [-88+rbp] #84.35[spill] + adcx r15, r12 #78.31 + mov r15d, esi #82.34 + adcx rdi, r11 #79.34 + mov rdx, QWORD PTR [80+rcx] #84.35 + adcx r8, r14 #80.34 + mulx r11, r14, QWORD PTR [72+rcx] #85.35 + adcx r9, r10 #81.34 + mulx r12, r10, QWORD PTR [64+rcx] #84.35 + adcx r13, rax #82.34 + mov QWORD PTR [-296+rbp], r13 #82.34[spill] + setb r15b #82.34 + mov DWORD PTR [-280+rbp], r15d #82.34[spill] + mov r15d, esi #88.34 + adox r15d, esi #88.34 + mulx r13, rax, QWORD PTR [80+rcx] #86.35 + mov r15d, esi #90.34 + adox r10, r11 #88.34 + mov r11d, esi #95.34 + mulx rdx, rcx, QWORD PTR [88+rcx] #87.35 + adox r14, r13 #89.34 + adox rax, rdx #90.34 + seto r15b #90.34 + clc #91.31 + adcx r15, rcx #91.31 + mov ecx, esi #92.34 + adox ecx, esi #92.34 + mov rcx, QWORD PTR [-296+rbp] #95.34[spill] + adox rdi, r12 #92.34 + mov rdx, rdi #97.35 + adox r8, r10 #93.34 + adox r9, r14 #94.34 + mov r14, 0x0ffffffff #98.35 + adox rcx, rax #95.34 + mov eax, DWORD PTR [-288+rbp] #96.34[spill] + seto r11b #95.34 + xor r12d, r12d #95.34 + mov r10, -1 #95.34 + add eax, DWORD PTR [-280+rbp] #96.34[spill] + cmp esi, r11d #96.34 + adcx rax, r15 #96.34 + mulx r15, r13, r10 #97.35 + mov r10, 0xffffffff00000001 #99.35 + setb r12b #96.34 + mov DWORD PTR [-272+rbp], r12d #96.34[spill] + mulx r12, r11, r14 #98.35 + mulx r14, r10, r10 #99.35 + mov edx, esi #100.34 + adox edx, esi #100.34 + adox r13, r12 #100.34 + mov r12d, 0 #101.34 + adox r11, r12 #101.34 + adox r14, r12 #102.34 + mov r12d, esi #102.34 + seto r12b #102.34 + clc #103.31 + adcx r12, r10 #103.31 + mov r10d, esi #104.31 + adox r10d, esi #104.31 + adox rdi, r15 #104.31 + mov edi, esi #108.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 + adox r9, r11 #106.34 + mov r11, QWORD PTR [-88+rbp] #110.35[spill] + adox rcx, r14 #107.34 + mov rdx, QWORD PTR [88+r11] #110.35 + adox rax, r12 #108.34 + mulx r12, r14, QWORD PTR [64+r11] #110.35 + seto dil #108.34 + clc #114.34 + mulx r13, r15, QWORD PTR [72+r11] #111.35 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 + mulx r13, r10, QWORD PTR [80+r11] #112.35 + adcx r15, r13 #115.34 + mulx r13, r11, QWORD PTR [88+r11] #113.35 + mov edx, esi #117.31 + adcx r10, r13 #116.34 + mov r13d, esi #116.34 + setb r13b #116.34 + adox edx, esi #117.31 + adox r13, r11 #117.31 + clc #118.34 + mov r11d, DWORD PTR [-272+rbp] #122.34[spill] + adcx r8, r12 #118.34 + mov rdx, r8 #123.35 + adcx r9, r14 #119.34 + adcx rcx, r15 #120.34 + mov r15d, esi #121.34 + adcx rax, r10 #121.34 + mov r10, 0x0ffffffff #124.35 + setb r15b #121.34 + add r11d, edi #122.34 + xor edi, edi #122.34 + cmp esi, r15d #122.34 + adcx r11, r13 #122.34 + mov r13, -1 #123.35 + mulx r12, r14, r13 #123.35 + setb dil #122.34 + mov DWORD PTR [-264+rbp], edi #122.34[spill] + mov rdi, 0xffffffff00000001 #125.35 + mulx r10, r13, r10 #124.35 + mulx rdi, r15, rdi #125.35 + mov edx, esi #126.34 + adox edx, esi #126.34 + mov edx, esi #128.34 + adox r14, r10 #126.34 + mov r10d, 0 #127.34 + adox r13, r10 #127.34 + adox rdi, r10 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r15 #129.31 + mov r15d, esi #130.31 + adox r15d, esi #130.31 + adox r8, r12 #130.31 + mov r8d, esi #134.34 + adox r9, r14 #131.34 + mov r14d, DWORD PTR [-264+rbp] #140.31[spill] + adox rcx, r13 #132.34 + mov r13, r9 #136.34 + adox rax, rdi #133.34 + mov rdi, 0xffffffff00000001 #139.34 + adox r11, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r8b #134.34 + xor r15d, r15d #134.34 + mov r12, -1 #134.34 + add r14d, r8d #140.31 + sub r13, r12 #136.34 + mov r12, rcx #137.34 + mov r8, rax #138.34 + sbb r12, rdx #137.34 + mov rdx, r11 #139.34 + sbb r8, r10 #138.34 + sbb rdx, rdi #139.34 + setb r15b #139.34 + cmp esi, r15d #140.31 + sbb r14, r10 #140.31 + setb sil #140.31 + testq rsi, rsi; + cmovnzq r11, rdx; + testq rsi, rsi; + cmovnzq rax, r8; + testq rsi, rsi; + cmovnzq rcx, r12; + testq rsi, rsi; + cmovnzq r9, r13; + mov rax, QWORD PTR [-104+rbp] #197.39[spill] + mov QWORD PTR [-216+rbp], r13 #9.0 + mov QWORD PTR [-240+rbp], rdx #196.37 + mov rcx, QWORD PTR [16+rax] #197.39 + or rcx, QWORD PTR [24+rax] #152.23 + or rcx, QWORD PTR [8+rax] #153.23 + or rcx, QWORD PTR [rax] #154.23 + mov QWORD PTR [-232+rbp], r8 #196.37 + mov QWORD PTR [-224+rbp], r12 #196.37 + mov QWORD PTR [-112+rbp], rcx #154.23[spill] + vmovups YMMWORD PTR [-336+rbp], ymm0 #198.20 + mov r8, rax #198.66 + xor r14d, r14d #42.32 + mov rdx, QWORD PTR [-240+rbp] #198.59 + mov rcx, QWORD PTR [8+r8] #198.80 + mov rsi, QWORD PTR [r8] #198.87 + mulx r12, rdi, rsi #38.33 + mulx r15, r9, rcx #39.33 + adcx rdi, r15 #42.32 + mov r15, 0x0ffffffff #47.33 + mov rax, QWORD PTR [16+r8] #198.73 + mov r11, QWORD PTR [24+r8] #198.66 + mulx r8, r10, rax #40.33 + adcx r9, r8 #43.32 + mov r8d, 0 #44.32 + mov QWORD PTR [-192+rbp], rcx #198.80[spill] + mulx r13, rcx, r11 #41.33 + mov rdx, r12 #46.33 + adcx r10, r13 #44.32 + mov QWORD PTR [-80+rbp], rsi #198.87[spill] + mov esi, r8d #45.30 + setb r14b #44.32 + adox esi, r8d #45.30 + adox r14, rcx #45.30 + mov ecx, 0 #50.32 + mov QWORD PTR [-200+rbp], rax #198.73[spill] + mov eax, r8d #45.30 + mov QWORD PTR [-208+rbp], r11 #198.66[spill] + mov r11, -1 #46.33 + seto al #45.30 + clc #49.32 + mulx r13, r11, r11 #46.33 + mulx rsi, r15, r15 #47.33 + adcx r11, rsi #49.32 + mov rsi, 0xffffffff00000001 #48.33 + mulx rax, rsi, rsi #48.33 + mov edx, r8d #52.30 + adcx r15, rcx #50.32 + adcx rax, rcx #51.32 + mov ecx, r8d #51.32 + setb cl #51.32 + adox edx, r8d #52.30 + adox rcx, rsi #52.30 + mov rdx, QWORD PTR [-232+rbp] #58.33 + clc #53.30 + adcx r12, r13 #53.30 + mov r13d, r8d #62.32 + mov r12d, r8d #57.32 + adcx rdi, r11 #54.32 + adcx r9, r15 #55.32 + adcx r10, rax #56.32 + adcx r14, rcx #57.32 + mov QWORD PTR [-304+rbp], r14 #57.32[spill] + setb r12b #57.32 + adox r13d, r8d #62.32 + mov r13, 0x0ffffffff #72.35 + mov QWORD PTR [-296+rbp], r12 #70.34[spill] + mulx r14, r15, QWORD PTR [-80+rbp] #58.33[spill] + mulx rax, r12, QWORD PTR [-192+rbp] #59.33[spill] + adox r15, rax #62.32 + mov eax, r8d #64.32 + mulx r11, rcx, QWORD PTR [-200+rbp] #60.33[spill] + adox r12, r11 #63.32 + mulx rdx, rsi, QWORD PTR [-208+rbp] #61.33[spill] + adox rcx, rdx #64.32 + seto al #64.32 + clc #65.30 + adcx rax, rsi #65.30 + mov esi, r8d #66.34 + adox esi, r8d #66.34 + mov rsi, QWORD PTR [-304+rbp] #69.34[spill] + adox rdi, r14 #66.34 + mov r14, QWORD PTR [-296+rbp] #70.34[spill] + mov rdx, rdi #71.35 + adox r9, r15 #67.34 + mov r15, -1 #71.35 + adox r10, r12 #68.34 + adox rsi, rcx #69.34 + mov ecx, r8d #70.34 + adox r14, rax #70.34 + mulx r12, rax, r15 #71.35 + mov r15, 0xffffffff00000001 #73.35 + seto cl #70.34 + clc #74.34 + mov DWORD PTR [-288+rbp], ecx #70.34[spill] + mulx rcx, r11, r13 #72.35 + mov r13d, 0 #75.34 + adcx rax, rcx #74.34 + mulx r15, rcx, r15 #73.35 + mov edx, r8d #77.31 + adcx r11, r13 #75.34 + adcx r15, r13 #76.34 + mov r13d, r8d #76.34 + setb r13b #76.34 + adox edx, r8d #77.31 + adox r13, rcx #77.31 + mov rdx, QWORD PTR [-224+rbp] #84.35 + clc #78.31 + adcx rdi, r12 #78.31 + mov edi, r8d #82.34 + adcx r9, rax #79.34 + mulx rax, r12, QWORD PTR [-192+rbp] #85.35[spill] + adcx r10, r11 #80.34 + adcx rsi, r15 #81.34 + adcx r14, r13 #82.34 + mov r13d, r8d #88.34 + mov QWORD PTR [-296+rbp], r14 #82.34[spill] + setb dil #82.34 + adox r13d, r8d #88.34 + mulx r14, r15, QWORD PTR [-80+rbp] #84.35[spill] + adox r15, rax #88.34 + mov DWORD PTR [-280+rbp], edi #82.34[spill] + mulx r11, rdi, QWORD PTR [-200+rbp] #86.35[spill] + adox r12, r11 #89.34 + mov r11d, r8d #90.34 + mulx rdx, rcx, QWORD PTR [-208+rbp] #87.35[spill] + adox rdi, rdx #90.34 + seto r11b #90.34 + clc #91.31 + adcx r11, rcx #91.31 + mov ecx, r8d #92.34 + adox ecx, r8d #92.34 + mov rcx, QWORD PTR [-296+rbp] #95.34[spill] + adox r9, r14 #92.34 + mov r14d, r8d #95.34 + mov eax, DWORD PTR [-288+rbp] #96.34[spill] + mov rdx, r9 #97.35 + adox r10, r15 #93.34 + adox rsi, r12 #94.34 + adox rcx, rdi #95.34 + mov rdi, 0x0ffffffff #98.35 + seto r14b #95.34 + xor r15d, r15d #95.34 + mov r12, -1 #95.34 + add eax, DWORD PTR [-280+rbp] #96.34[spill] + cmp r8d, r14d #96.34 + mov r14, 0xffffffff00000001 #99.35 + adcx rax, r11 #96.34 + mulx r11, rdi, rdi #98.35 + setb r15b #96.34 + mov DWORD PTR [-184+rbp], r15d #96.34[spill] + mulx r15, r13, r12 #97.35 + mulx r14, r12, r14 #99.35 + mov edx, r8d #100.34 + adox edx, r8d #100.34 + mov rdx, QWORD PTR [-216+rbp] #110.35 + adox r13, r11 #100.34 + mov r11d, 0 #101.34 + adox rdi, r11 #101.34 + adox r14, r11 #102.34 + mov r11d, r8d #102.34 + seto r11b #102.34 + clc #103.31 + adcx r11, r12 #103.31 + mov r12d, r8d #104.31 + adox r12d, r8d #104.31 + mov r12d, r8d #108.34 + adox r9, r15 #104.31 + adox r10, r13 #105.34 + adox rsi, rdi #106.34 + mulx r9, rdi, QWORD PTR [-192+rbp] #111.35[spill] + adox rcx, r14 #107.34 + mulx r14, r15, QWORD PTR [-80+rbp] #110.35[spill] + adox rax, r11 #108.34 + mulx r11, r13, QWORD PTR [-200+rbp] #112.35[spill] + seto r12b #108.34 + clc #114.34 + adcx r15, r9 #114.34 + adcx rdi, r11 #115.34 + mulx r9, r11, QWORD PTR [-208+rbp] #113.35[spill] + mov edx, r8d #117.31 + adcx r13, r9 #116.34 + mov r9d, r8d #116.34 + setb r9b #116.34 + adox edx, r8d #117.31 + adox r9, r11 #117.31 + clc #118.34 + mov r11d, DWORD PTR [-184+rbp] #122.34[spill] + adcx r10, r14 #118.34 + mov rdx, r10 #123.35 + adcx rsi, r15 #119.34 + mov r15, -1 #123.35 + adcx rcx, rdi #120.34 + mulx r15, rdi, r15 #123.35 + adcx rax, r13 #121.34 + mov r13d, r8d #121.34 + setb r13b #121.34 + xor r14d, r14d #121.34 + add r11d, r12d #122.34 + cmp r8d, r13d #122.34 + mov r12, 0x0ffffffff #124.35 + adcx r11, r9 #122.34 + mov r9, 0xffffffff00000001 #125.35 + mulx r9, r13, r9 #125.35 + setb r14b #122.34 + mov DWORD PTR [-176+rbp], r14d #122.34[spill] + mulx r12, r14, r12 #124.35 + mov edx, r8d #126.34 + adox edx, r8d #126.34 + mov edx, r8d #128.34 + adox rdi, r12 #126.34 + mov r12d, 0 #127.34 + adox r14, r12 #127.34 + adox r9, r12 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r13 #129.31 + mov r13d, r8d #130.31 + adox r13d, r8d #130.31 + adox r10, r15 #130.31 + mov r10d, r8d #134.34 + adox rsi, rdi #131.34 + mov edi, DWORD PTR [-176+rbp] #140.31[spill] + adox rcx, r14 #132.34 + mov r14, rsi #136.34 + adox rax, r9 #133.34 + mov r9, 0xffffffff00000001 #139.34 + adox r11, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r10b #134.34 + xor r13d, r13d #134.34 + mov r15, -1 #134.34 + add edi, r10d #140.31 + sub r14, r15 #136.34 + mov r15, rcx #137.34 + mov r10, rax #138.34 + sbb r15, rdx #137.34 + mov rdx, r11 #139.34 + sbb r10, r12 #138.34 + sbb rdx, r9 #139.34 + setb r13b #139.34 + cmp r8d, r13d #140.31 + sbb rdi, r12 #140.31 + setb r8b #140.31 + testq r8, r8; + cmovnzq r11, rdx; + testq r8, r8; + cmovnzq rax, r10; + testq r8, r8; + cmovnzq rcx, r15; + testq r8, r8; + cmovnzq rsi, r14; + mov QWORD PTR [-216+rbp], r14 #9.0 + mov QWORD PTR [-240+rbp], rdx #198.34 + mov QWORD PTR [-232+rbp], r10 #198.34 + mov QWORD PTR [-224+rbp], r15 #198.34 + vmovups YMMWORD PTR [-272+rbp], ymm0 #200.21 + mov r8, QWORD PTR [-88+rbp] #38.33[spill] + mov rdx, QWORD PTR [-240+rbp] #200.61 + xor r14d, r14d #42.32 + xor r13d, r13d #42.32 + xor esi, esi #42.32 + mulx r12, rdi, QWORD PTR [64+r8] #38.33 + mulx rcx, r9, QWORD PTR [72+r8] #39.33 + adcx rdi, rcx #42.32 + mov rcx, -1 #46.33 + mulx rax, r10, QWORD PTR [80+r8] #40.33 + adcx r9, rax #43.32 + mov rax, 0x0ffffffff #47.33 + mulx r15, r11, QWORD PTR [88+r8] #41.33 + mov r8d, 0 #44.32 + adcx r10, r15 #44.32 + setb r14b #44.32 + mov rdx, r12 #46.33 + adox r13d, r8d #45.30 + adox r14, r11 #45.30 + mulx r13, r11, rcx #46.33 + mov ecx, 0 #50.32 + seto sil #45.30 + clc #49.32 + mulx rsi, r15, rax #47.33 + adcx r11, rsi #49.32 + mov rsi, 0xffffffff00000001 #48.33 + mulx rax, rsi, rsi #48.33 + mov edx, r8d #52.30 + adcx r15, rcx #50.32 + adcx rax, rcx #51.32 + mov ecx, r8d #51.32 + setb cl #51.32 + adox edx, r8d #52.30 + adox rcx, rsi #52.30 + mov rdx, QWORD PTR [-232+rbp] #58.33 + clc #53.30 + adcx r12, r13 #53.30 + mov r13, QWORD PTR [-88+rbp] #58.33[spill] + adcx rdi, r11 #54.32 + adcx r9, r15 #55.32 + mov r15d, r8d #57.32 + adcx r10, rax #56.32 + mulx rax, r11, QWORD PTR [72+r13] #59.33 + adcx r14, rcx #57.32 + mov QWORD PTR [-184+rbp], r14 #57.32[spill] + setb r15b #57.32 + mov QWORD PTR [-176+rbp], r15 #70.34[spill] + mulx r12, r14, QWORD PTR [64+r13] #58.33 + mulx r15, rcx, QWORD PTR [80+r13] #60.33 + mulx rdx, rsi, QWORD PTR [88+r13] #61.33 + mov r13d, r8d #62.32 + adox r13d, r8d #62.32 + mov r13d, 0 #75.34 + adox r14, rax #62.32 + mov eax, r8d #64.32 + adox r11, r15 #63.32 + mov r15d, r8d #66.34 + adox rcx, rdx #64.32 + seto al #64.32 + clc #65.30 + adcx rax, rsi #65.30 + adox r15d, r8d #66.34 + mov rsi, QWORD PTR [-184+rbp] #69.34[spill] + mov r15, 0xffffffff00000001 #73.35 + adox rdi, r12 #66.34 + mov r12d, r8d #70.34 + mov rdx, rdi #71.35 + adox r9, r14 #67.34 + mov r14, QWORD PTR [-176+rbp] #70.34[spill] + adox r10, r11 #68.34 + mov r11, 0x0ffffffff #72.35 + adox rsi, rcx #69.34 + mov rcx, -1 #71.35 + adox r14, rax #70.34 + seto r12b #70.34 + clc #74.34 + mov DWORD PTR [-168+rbp], r12d #70.34[spill] + mulx r12, rax, rcx #71.35 + mulx rcx, r11, r11 #72.35 + adcx rax, rcx #74.34 + mulx r15, rcx, r15 #73.35 + mov edx, r8d #77.31 + adcx r11, r13 #75.34 + adcx r15, r13 #76.34 + mov r13d, r8d #76.34 + setb r13b #76.34 + adox edx, r8d #77.31 + adox r13, rcx #77.31 + mov rdx, QWORD PTR [-224+rbp] #84.35 + clc #78.31 + adcx rdi, r12 #78.31 + mov edi, r8d #82.34 + adcx r9, rax #79.34 + adcx r10, r11 #80.34 + adcx rsi, r15 #81.34 + adcx r14, r13 #82.34 + mov r13, QWORD PTR [-88+rbp] #84.35[spill] + setb dil #82.34 + mov QWORD PTR [-176+rbp], r14 #82.34[spill] + mov DWORD PTR [-160+rbp], edi #82.34[spill] + mulx r12, r14, QWORD PTR [64+r13] #84.35 + mulx rax, r11, QWORD PTR [72+r13] #85.35 + mulx r15, rdi, QWORD PTR [80+r13] #86.35 + mulx rdx, rcx, QWORD PTR [88+r13] #87.35 + mov r13d, r8d #88.34 + adox r13d, r8d #88.34 + mov r13d, r8d #90.34 + adox r14, rax #88.34 + adox r11, r15 #89.34 + mov r15d, r8d #95.34 + adox rdi, rdx #90.34 + seto r13b #90.34 + clc #91.31 + adcx r13, rcx #91.31 + mov ecx, r8d #92.34 + adox ecx, r8d #92.34 + mov rcx, QWORD PTR [-176+rbp] #95.34[spill] + adox r9, r12 #92.34 + mov eax, DWORD PTR [-168+rbp] #96.34[spill] + mov rdx, r9 #97.35 + adox r10, r14 #93.34 + mov r14, 0x0ffffffff #98.35 + adox rsi, r11 #94.34 + adox rcx, rdi #95.34 + seto r15b #95.34 + xor r12d, r12d #95.34 + mov rdi, -1 #95.34 + add eax, DWORD PTR [-160+rbp] #96.34[spill] + cmp r8d, r15d #96.34 + adcx rax, r13 #96.34 + mulx r15, r13, rdi #97.35 + setb r12b #96.34 + mov DWORD PTR [-152+rbp], r12d #96.34[spill] + mov r12, 0xffffffff00000001 #99.35 + mulx r14, rdi, r14 #98.35 + mulx r11, r12, r12 #99.35 + mov edx, r8d #100.34 + adox edx, r8d #100.34 + mov rdx, QWORD PTR [-216+rbp] #110.35 + adox r13, r14 #100.34 + mov r14d, 0 #101.34 + adox rdi, r14 #101.34 + adox r11, r14 #102.34 + mov r14d, r8d #102.34 + seto r14b #102.34 + clc #103.31 + adcx r14, r12 #103.31 + mov r12d, r8d #104.31 + adox r12d, r8d #104.31 + mov r12, QWORD PTR [-88+rbp] #110.35[spill] + adox r9, r15 #104.31 + mov r9d, r8d #108.34 + adox r10, r13 #105.34 + mulx r13, r15, QWORD PTR [64+r12] #110.35 + adox rsi, rdi #106.34 + adox rcx, r11 #107.34 + adox rax, r14 #108.34 + mulx r11, r14, QWORD PTR [72+r12] #111.35 + seto r9b #108.34 + clc #114.34 + adcx r15, r11 #114.34 + mulx r11, rdi, QWORD PTR [80+r12] #112.35 + adcx r14, r11 #115.34 + mulx r12, r11, QWORD PTR [88+r12] #113.35 + mov edx, r8d #117.31 + adcx rdi, r12 #116.34 + mov r12d, r8d #116.34 + setb r12b #116.34 + adox edx, r8d #117.31 + adox r12, r11 #117.31 + clc #118.34 + adcx r10, r13 #118.34 + mov rdx, r10 #123.35 + adcx rsi, r15 #119.34 + mov r15d, r8d #121.34 + adcx rcx, r14 #120.34 + mov r14, 0x0ffffffff #124.35 + adcx rax, rdi #121.34 + mov edi, DWORD PTR [-152+rbp] #122.34[spill] + setb r15b #121.34 + add edi, r9d #122.34 + xor r9d, r9d #122.34 + cmp r8d, r15d #122.34 + mov r15, -1 #123.35 + adcx rdi, r12 #122.34 + mulx r12, r11, r15 #123.35 + setb r9b #122.34 + mov DWORD PTR [-144+rbp], r9d #122.34[spill] + mov r9, 0xffffffff00000001 #125.35 + mulx r14, r15, r14 #124.35 + mulx r9, r13, r9 #125.35 + mov edx, r8d #126.34 + adox edx, r8d #126.34 + mov edx, r8d #128.34 + adox r11, r14 #126.34 + mov r14d, 0 #127.34 + adox r15, r14 #127.34 + adox r9, r14 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r13 #129.31 + mov r13d, r8d #130.31 + adox r13d, r8d #130.31 + adox r10, r12 #130.31 + mov r10d, r8d #134.34 + adox rsi, r11 #131.34 + mov r11d, DWORD PTR [-144+rbp] #140.31[spill] + adox rcx, r15 #132.34 + mov r15, rsi #136.34 + adox rax, r9 #133.34 + mov r9, 0xffffffff00000001 #139.34 + adox rdi, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r10b #134.34 + xor r13d, r13d #134.34 + mov r12, -1 #134.34 + add r11d, r10d #140.31 + sub r15, r12 #136.34 + mov r12, rcx #137.34 + mov r10, rax #138.34 + sbb r12, rdx #137.34 + mov rdx, rdi #139.34 + sbb r10, r14 #138.34 + sbb rdx, r9 #139.34 + setb r13b #139.34 + cmp r8d, r13d #140.31 + sbb r11, r14 #140.31 + setb r8b #140.31 + testq r8, r8; + cmovnzq rdi, rdx; + testq r8, r8; + cmovnzq rax, r10; + testq r8, r8; + cmovnzq rcx, r12; + testq r8, r8; + cmovnzq rsi, r15; + mov QWORD PTR [-248+rbp], r15 #9.0 + mov QWORD PTR [-272+rbp], rdx #200.35 + mov QWORD PTR [-264+rbp], r10 #200.35 + mov QWORD PTR [-256+rbp], r12 #200.35 + vmovups YMMWORD PTR [-304+rbp], ymm0 #201.19 + mov r15, QWORD PTR [-88+rbp] #159.32[spill] + xor r11d, r11d #9.0 + mov r12, QWORD PTR [-200+rbp] #152.23[spill] + xor edi, edi #168.32 + or r12, QWORD PTR [-208+rbp] #152.23[spill] + mov rsi, QWORD PTR [-336+rbp] #159.32 + mov r9, QWORD PTR [-192+rbp] #153.23[spill] + or r9, r12 #153.23 + xor r12d, r12d #162.32 + xor r10d, r10d #159.32 + sub rsi, QWORD PTR [r15] #159.32 + mov r14, QWORD PTR [-328+rbp] #160.32 + sbb r14, QWORD PTR [8+r15] #160.32 + mov rcx, QWORD PTR [-320+rbp] #161.32 + sbb rcx, QWORD PTR [16+r15] #161.32 + mov r13, QWORD PTR [-312+rbp] #162.32 + sbb r13, QWORD PTR [24+r15] #162.32 + setb r10b #162.32 + xor r8d, r8d #162.32 + or QWORD PTR [-80+rbp], r9 #154.23[spill] + mov r9, -1 #9.0 + testq r10, r10; + cmovnzq r9, r11; + xor edx, edx #165.32 + mov eax, r11d #167.32 + mov r9, 0xffffffff00000001 #170.30 + adcx rsi, r11 #165.32 + mov rdx, QWORD PTR [64+r15] #38.33 + adcx r14, rax #167.32 + mov QWORD PTR [-184+rbp], rsi #165.32[spill] + adcx rcx, rdi #168.32 + mov QWORD PTR [-168+rbp], rcx #168.32[spill] + setb r8b #168.32 + xor r15d, r15d #168.32 + and r11, r9 #170.30 + cmp r12d, r8d #170.30 + mov QWORD PTR [-296+rbp], rcx #201.33 + adcx r13, r11 #170.30 + mov QWORD PTR [-160+rbp], r13 #170.30[spill] + adox r15d, r12d #42.32 + mov QWORD PTR [-304+rbp], r13 #201.33 + mov r15d, r12d #44.32 + mulx r8, r10, r13 #38.33 + mulx rcx, r13, rcx #39.33 + adox r10, rcx #42.32 + mov rcx, -1 #46.33 + mulx rax, r11, r14 #40.33 + adox r13, rax #43.32 + mov QWORD PTR [-280+rbp], rsi #201.33 + mov QWORD PTR [-176+rbp], r14 #167.32[spill] + mov QWORD PTR [-288+rbp], r14 #201.33 + mulx r14, rsi, rsi #41.33 + mov rdx, r8 #46.33 + adox r11, r14 #44.32 + seto r15b #44.32 + clc #45.30 + adcx r15, rsi #45.30 + mov QWORD PTR [-152+rbp], r15 #45.30[spill] + mulx r15, r14, rcx #46.33 + mov ecx, r12d #49.32 + adox ecx, r12d #49.32 + mov rsi, 0x0ffffffff #47.33 + mulx rax, rsi, rsi #47.33 + mov ecx, r12d #51.32 + adox r14, rax #49.32 + mov eax, r12d #53.30 + mulx r9, rdx, r9 #48.33 + adox rsi, rdi #50.32 + adox r9, rdi #51.32 + seto cl #51.32 + clc #52.30 + adcx rcx, rdx #52.30 + adox eax, r12d #53.30 + adox r8, r15 #53.30 + mov r15, QWORD PTR [-88+rbp] #58.33[spill] + adox r10, r14 #54.32 + mov rdx, QWORD PTR [72+r15] #58.33 + adox r13, rsi #55.32 + mov rsi, QWORD PTR [-152+rbp] #57.32[spill] + adox r11, r9 #56.32 + mulx r8, rdi, QWORD PTR [-160+rbp] #58.33[spill] + adox rsi, rcx #57.32 + mov ecx, r12d #57.32 + mulx r9, rax, QWORD PTR [-168+rbp] #59.33[spill] + seto cl #57.32 + clc #62.32 + adcx rdi, r9 #62.32 + mulx r14, r9, QWORD PTR [-176+rbp] #60.33[spill] + adcx rax, r14 #63.32 + mulx r15, r14, QWORD PTR [-184+rbp] #61.33[spill] + mov edx, r12d #65.30 + adcx r9, r15 #64.32 + mov r15d, r12d #64.32 + setb r15b #64.32 + adox edx, r12d #65.30 + adox r15, r14 #65.30 + clc #66.34 + adcx r10, r8 #66.34 + mov r8d, r12d #70.34 + mov rdx, r10 #71.35 + adcx r13, rdi #67.34 + mov rdi, -1 #71.35 + adcx r11, rax #68.34 + adcx rsi, r9 #69.34 + mov r9, 0x0ffffffff #72.35 + adcx rcx, r15 #70.34 + mulx rax, r15, r9 #72.35 + mov r9, 0xffffffff00000001 #73.35 + setb r8b #70.34 + mov DWORD PTR [-144+rbp], r8d #70.34[spill] + mulx rdi, r8, rdi #71.35 + mulx r9, r14, r9 #73.35 + mov edx, r12d #74.34 + adox edx, r12d #74.34 + adox r8, rax #74.34 + mov eax, 0 #75.34 + adox r15, rax #75.34 + adox r9, rax #76.34 + mov eax, r12d #76.34 + seto al #76.34 + clc #77.31 + adcx rax, r14 #77.31 + mov r14d, r12d #78.31 + adox r14d, r12d #78.31 + mov r14, QWORD PTR [-88+rbp] #84.35[spill] + adox r10, rdi #78.31 + mov r10d, r12d #82.34 + adox r13, r8 #79.34 + mov rdx, QWORD PTR [80+r14] #84.35 + adox r11, r15 #80.34 + mulx rdi, r15, QWORD PTR [-168+rbp] #85.35[spill] + adox rsi, r9 #81.34 + adox rcx, rax #82.34 + mulx rax, r8, QWORD PTR [-160+rbp] #84.35[spill] + seto r10b #82.34 + clc #88.34 + adcx r8, rdi #88.34 + mulx r9, rdi, QWORD PTR [-176+rbp] #86.35[spill] + adcx r15, r9 #89.34 + mulx r14, r9, QWORD PTR [-184+rbp] #87.35[spill] + mov edx, r12d #91.31 + adcx rdi, r14 #90.34 + mov r14d, r12d #90.34 + setb r14b #90.34 + adox edx, r12d #91.31 + adox r14, r9 #91.31 + clc #92.34 + adcx r13, rax #92.34 + mov eax, DWORD PTR [-144+rbp] #96.34[spill] + mov rdx, r13 #97.35 + adcx r11, r8 #93.34 + mov r8, 0x0ffffffff #98.35 + adcx rsi, r15 #94.34 + mov r15d, r12d #95.34 + adcx rcx, rdi #95.34 + setb r15b #95.34 + mov r9, -1 #95.34 + add eax, r10d #96.34 + xor r10d, r10d #96.34 + cmp r12d, r15d #96.34 + adcx rax, r14 #96.34 + mulx r15, r14, r8 #98.35 + mov r8, 0xffffffff00000001 #99.35 + setb r10b #96.34 + mov DWORD PTR [-136+rbp], r10d #96.34[spill] + mulx r10, r9, r9 #97.35 + mulx r8, rdi, r8 #99.35 + mov edx, r12d #100.34 + adox edx, r12d #100.34 + adox r9, r15 #100.34 + mov r15d, 0 #101.34 + adox r14, r15 #101.34 + adox r8, r15 #102.34 + mov r15d, r12d #102.34 + seto r15b #102.34 + clc #103.31 + adcx r15, rdi #103.31 + mov edi, r12d #104.31 + adox edi, r12d #104.31 + adox r13, r10 #104.31 + mov r13d, r12d #108.34 + adox r11, r9 #105.34 + adox rsi, r14 #106.34 + adox rcx, r8 #107.34 + adox rax, r15 #108.34 + mov r15, QWORD PTR [-88+rbp] #110.35[spill] + seto r13b #108.34 + clc #114.34 + mov rdx, QWORD PTR [88+r15] #110.35 + mulx r10, r9, QWORD PTR [-160+rbp] #110.35[spill] + mulx r14, r8, QWORD PTR [-168+rbp] #111.35[spill] + adcx r9, r14 #114.34 + mulx rdi, r14, QWORD PTR [-176+rbp] #112.35[spill] + adcx r8, rdi #115.34 + mulx r15, rdi, QWORD PTR [-184+rbp] #113.35[spill] + mov edx, r12d #117.31 + adcx r14, r15 #116.34 + mov r15d, r12d #116.34 + setb r15b #116.34 + adox edx, r12d #117.31 + adox r15, rdi #117.31 + clc #118.34 + adcx r11, r10 #118.34 + mov rdx, r11 #123.35 + adcx rsi, r9 #119.34 + mov r9d, r12d #121.34 + adcx rcx, r8 #120.34 + mov r8, 0x0ffffffff #124.35 + adcx rax, r14 #121.34 + mov r14d, DWORD PTR [-136+rbp] #122.34[spill] + setb r9b #121.34 + add r14d, r13d #122.34 + xor r13d, r13d #122.34 + cmp r12d, r9d #122.34 + mov r9, -1 #123.35 + adcx r14, r15 #122.34 + mulx r15, rdi, r9 #123.35 + setb r13b #122.34 + mov DWORD PTR [-128+rbp], r13d #122.34[spill] + mov r13, 0xffffffff00000001 #125.35 + mulx r8, r9, r8 #124.35 + mulx r13, r10, r13 #125.35 + mov edx, r12d #126.34 + adox edx, r12d #126.34 + mov edx, r12d #128.34 + adox rdi, r8 #126.34 + mov r8d, 0 #127.34 + adox r9, r8 #127.34 + adox r13, r8 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r10 #129.31 + mov r10d, r12d #130.31 + adox r10d, r12d #130.31 + adox r11, r15 #130.31 + mov r15d, r12d #134.34 + adox rsi, rdi #131.34 + mov edi, DWORD PTR [-128+rbp] #140.31[spill] + adox rcx, r9 #132.34 + mov r9, rsi #136.34 + adox rax, r13 #133.34 + mov r13, 0xffffffff00000001 #139.34 + adox r14, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r15b #134.34 + xor r10d, r10d #134.34 + mov r11, -1 #134.34 + add edi, r15d #140.31 + sub r9, r11 #136.34 + mov r15, rcx #137.34 + mov r11, r14 #139.34 + sbb r15, rdx #137.34 + mov rdx, rax #138.34 + sbb rdx, r8 #138.34 + sbb r11, r13 #139.34 + setb r10b #139.34 + cmp r12d, r10d #140.31 + sbb rdi, r8 #140.31 + setb r12b #140.31 + testq r12, r12; + cmovnzq r14, r11; + testq r12, r12; + cmovnzq rax, rdx; + testq r12, r12; + cmovnzq rcx, r15; + testq r12, r12; + cmovnzq rsi, r9; + mov rax, QWORD PTR [-96+rbp] #9.0[spill] + mov QWORD PTR [72+rax], rdx #146.1 + mov rdx, QWORD PTR [-104+rbp] #203.39[spill] + mov QWORD PTR [88+rax], r9 #9.0 + mov QWORD PTR [64+rax], r11 #145.1 + mov QWORD PTR [80+rax], r15 #147.1 + mov rcx, QWORD PTR [48+rdx] #203.39 + or rcx, QWORD PTR [56+rdx] #152.23 + or rcx, QWORD PTR [40+rdx] #153.23 + or rcx, QWORD PTR [32+rdx] #154.23 + or QWORD PTR [-80+rbp], rcx #204.28[spill] + vmovups YMMWORD PTR [-240+rbp], ymm0 #205.20 + mov r8, rdx #38.33 + mov rdx, QWORD PTR [-272+rbp] #205.62 + xor r14d, r14d #42.32 + xor r13d, r13d #42.32 + xor esi, esi #42.32 + mulx r12, rdi, QWORD PTR [32+r8] #38.33 + mulx rcx, r9, QWORD PTR [40+r8] #39.33 + adcx rdi, rcx #42.32 + mov rcx, -1 #46.33 + mulx rax, r10, QWORD PTR [48+r8] #40.33 + adcx r9, rax #43.32 + mov rax, 0x0ffffffff #47.33 + mulx r15, r11, QWORD PTR [56+r8] #41.33 + mov r8d, 0 #44.32 + adcx r10, r15 #44.32 + setb r14b #44.32 + mov rdx, r12 #46.33 + adox r13d, r8d #45.30 + adox r14, r11 #45.30 + mulx r13, r11, rcx #46.33 + mov ecx, 0 #50.32 + seto sil #45.30 + clc #49.32 + mulx rsi, r15, rax #47.33 + adcx r11, rsi #49.32 + mov rsi, 0xffffffff00000001 #48.33 + mulx rax, rsi, rsi #48.33 + mov edx, r8d #52.30 + adcx r15, rcx #50.32 + adcx rax, rcx #51.32 + mov ecx, r8d #51.32 + setb cl #51.32 + adox edx, r8d #52.30 + adox rcx, rsi #52.30 + mov rdx, QWORD PTR [-264+rbp] #58.33 + clc #53.30 + adcx r12, r13 #53.30 + mov r13, QWORD PTR [-104+rbp] #58.33[spill] + adcx rdi, r11 #54.32 + adcx r9, r15 #55.32 + mov r15d, r8d #57.32 + adcx r10, rax #56.32 + mulx rax, r11, QWORD PTR [40+r13] #59.33 + adcx r14, rcx #57.32 + mov QWORD PTR [-208+rbp], r14 #57.32[spill] + setb r15b #57.32 + mov QWORD PTR [-200+rbp], r15 #70.34[spill] + mulx r12, r14, QWORD PTR [32+r13] #58.33 + mulx r15, rcx, QWORD PTR [48+r13] #60.33 + mulx rdx, rsi, QWORD PTR [56+r13] #61.33 + mov r13d, r8d #62.32 + adox r13d, r8d #62.32 + mov r13d, 0 #75.34 + adox r14, rax #62.32 + mov eax, r8d #64.32 + adox r11, r15 #63.32 + mov r15d, r8d #66.34 + adox rcx, rdx #64.32 + seto al #64.32 + clc #65.30 + adcx rax, rsi #65.30 + adox r15d, r8d #66.34 + mov rsi, QWORD PTR [-208+rbp] #69.34[spill] + mov r15, 0xffffffff00000001 #73.35 + adox rdi, r12 #66.34 + mov r12d, r8d #70.34 + mov rdx, rdi #71.35 + adox r9, r14 #67.34 + mov r14, QWORD PTR [-200+rbp] #70.34[spill] + adox r10, r11 #68.34 + mov r11, 0x0ffffffff #72.35 + adox rsi, rcx #69.34 + mov rcx, -1 #71.35 + adox r14, rax #70.34 + seto r12b #70.34 + clc #74.34 + mov DWORD PTR [-192+rbp], r12d #70.34[spill] + mulx r12, rax, rcx #71.35 + mulx rcx, r11, r11 #72.35 + adcx rax, rcx #74.34 + mulx r15, rcx, r15 #73.35 + mov edx, r8d #77.31 + adcx r11, r13 #75.34 + adcx r15, r13 #76.34 + mov r13d, r8d #76.34 + setb r13b #76.34 + adox edx, r8d #77.31 + adox r13, rcx #77.31 + mov rdx, QWORD PTR [-256+rbp] #84.35 + clc #78.31 + adcx rdi, r12 #78.31 + mov edi, r8d #82.34 + adcx r9, rax #79.34 + adcx r10, r11 #80.34 + adcx rsi, r15 #81.34 + adcx r14, r13 #82.34 + mov r13, QWORD PTR [-104+rbp] #84.35[spill] + setb dil #82.34 + mov QWORD PTR [-200+rbp], r14 #82.34[spill] + mov DWORD PTR [-184+rbp], edi #82.34[spill] + mulx r12, r14, QWORD PTR [32+r13] #84.35 + mulx rax, r11, QWORD PTR [40+r13] #85.35 + mulx r15, rdi, QWORD PTR [48+r13] #86.35 + mulx rdx, rcx, QWORD PTR [56+r13] #87.35 + mov r13d, r8d #88.34 + adox r13d, r8d #88.34 + mov r13d, r8d #90.34 + adox r14, rax #88.34 + adox r11, r15 #89.34 + mov r15d, r8d #95.34 + adox rdi, rdx #90.34 + seto r13b #90.34 + clc #91.31 + adcx r13, rcx #91.31 + mov ecx, r8d #92.34 + adox ecx, r8d #92.34 + mov rcx, QWORD PTR [-200+rbp] #95.34[spill] + adox r9, r12 #92.34 + mov eax, DWORD PTR [-192+rbp] #96.34[spill] + mov rdx, r9 #97.35 + adox r10, r14 #93.34 + mov r14, 0x0ffffffff #98.35 + adox rsi, r11 #94.34 + adox rcx, rdi #95.34 + seto r15b #95.34 + xor r12d, r12d #95.34 + mov rdi, -1 #95.34 + add eax, DWORD PTR [-184+rbp] #96.34[spill] + cmp r8d, r15d #96.34 + adcx rax, r13 #96.34 + mulx r15, r13, rdi #97.35 + setb r12b #96.34 + mov DWORD PTR [-176+rbp], r12d #96.34[spill] + mov r12, 0xffffffff00000001 #99.35 + mulx r14, rdi, r14 #98.35 + mulx r11, r12, r12 #99.35 + mov edx, r8d #100.34 + adox edx, r8d #100.34 + mov rdx, QWORD PTR [-248+rbp] #110.35 + adox r13, r14 #100.34 + mov r14d, 0 #101.34 + adox rdi, r14 #101.34 + adox r11, r14 #102.34 + mov r14d, r8d #102.34 + seto r14b #102.34 + clc #103.31 + adcx r14, r12 #103.31 + mov r12d, r8d #104.31 + adox r12d, r8d #104.31 + mov r12, QWORD PTR [-104+rbp] #110.35[spill] + adox r9, r15 #104.31 + mov r9d, r8d #108.34 + adox r10, r13 #105.34 + mulx r13, r15, QWORD PTR [32+r12] #110.35 + adox rsi, rdi #106.34 + adox rcx, r11 #107.34 + adox rax, r14 #108.34 + mulx r11, r14, QWORD PTR [40+r12] #111.35 + seto r9b #108.34 + clc #114.34 + adcx r15, r11 #114.34 + mulx r11, rdi, QWORD PTR [48+r12] #112.35 + adcx r14, r11 #115.34 + mulx r12, r11, QWORD PTR [56+r12] #113.35 + mov edx, r8d #117.31 + adcx rdi, r12 #116.34 + mov r12d, r8d #116.34 + setb r12b #116.34 + adox edx, r8d #117.31 + adox r12, r11 #117.31 + clc #118.34 + adcx r10, r13 #118.34 + mov rdx, r10 #123.35 + adcx rsi, r15 #119.34 + mov r15d, r8d #121.34 + adcx rcx, r14 #120.34 + mov r14, 0x0ffffffff #124.35 + adcx rax, rdi #121.34 + mov edi, DWORD PTR [-176+rbp] #122.34[spill] + setb r15b #121.34 + add edi, r9d #122.34 + xor r9d, r9d #122.34 + cmp r8d, r15d #122.34 + mov r15, -1 #123.35 + adcx rdi, r12 #122.34 + mulx r12, r11, r15 #123.35 + setb r9b #122.34 + mov DWORD PTR [-168+rbp], r9d #122.34[spill] + mov r9, 0xffffffff00000001 #125.35 + mulx r14, r15, r14 #124.35 + mulx r9, r13, r9 #125.35 + mov edx, r8d #126.34 + adox edx, r8d #126.34 + mov edx, r8d #128.34 + adox r11, r14 #126.34 + mov r14d, 0 #127.34 + adox r15, r14 #127.34 + adox r9, r14 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r13 #129.31 + mov r13d, r8d #130.31 + adox r13d, r8d #130.31 + adox r10, r12 #130.31 + mov r10d, r8d #134.34 + adox rsi, r11 #131.34 + mov r11d, DWORD PTR [-168+rbp] #140.31[spill] + adox rcx, r15 #132.34 + mov r15, rsi #136.34 + adox rax, r9 #133.34 + mov r9, 0xffffffff00000001 #139.34 + adox rdi, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r10b #134.34 + xor r13d, r13d #134.34 + mov r12, -1 #134.34 + add r11d, r10d #140.31 + sub r15, r12 #136.34 + mov r12, rcx #137.34 + mov r10, rax #138.34 + sbb r12, rdx #137.34 + mov rdx, rdi #139.34 + sbb r10, r14 #138.34 + sbb rdx, r9 #139.34 + setb r13b #139.34 + cmp r8d, r13d #140.31 + sbb r11, r14 #140.31 + setb r8b #140.31 + testq r8, r8; + cmovnzq rdi, rdx; + testq r8, r8; + cmovnzq rax, r10; + testq r8, r8; + cmovnzq rcx, r12; + testq r8, r8; + cmovnzq rsi, r15; + mov QWORD PTR [-216+rbp], r15 #9.0 + mov QWORD PTR [-240+rbp], rdx #205.34 + mov QWORD PTR [-232+rbp], r10 #205.34 + mov QWORD PTR [-224+rbp], r12 #205.34 + vmovups YMMWORD PTR [-336+rbp], ymm0 #206.19 + mov rcx, QWORD PTR [-88+rbp] #159.32[spill] + xor eax, eax #162.32 + mov r9, QWORD PTR [-240+rbp] #159.32 + xor esi, esi #162.32 + mov r11, QWORD PTR [-232+rbp] #160.32 + mov rdi, -1 #9.0 + sub r9, QWORD PTR [32+rcx] #159.32 + mov r13, QWORD PTR [-224+rbp] #161.32 + sbb r11, QWORD PTR [40+rcx] #160.32 + mov r14, 0xffffffff00000001 #170.30 + mov rdx, QWORD PTR [-216+rbp] #162.32 + sbb r13, QWORD PTR [48+rcx] #161.32 + sbb rdx, QWORD PTR [56+rcx] #162.32 + setb sil #162.32 + xor r12d, r12d #162.32 + xor r15d, r15d #162.32 + xor ecx, ecx #162.32 + testq rsi, rsi; + cmovnzq rdi, rcx; + xor r8d, r8d #165.32 + mov r10d, ecx #167.32 + adcx r9, rcx #165.32 + mov QWORD PTR [-312+rbp], r9 #206.33 + adcx r11, r10 #167.32 + mov QWORD PTR [-320+rbp], r11 #206.33 + adcx r13, r12 #168.32 + mov QWORD PTR [-328+rbp], r13 #206.33 + setb r15b #168.32 + and rcx, r14 #170.30 + cmp eax, r15d #170.30 + adcx rdx, rcx #170.30 + mov QWORD PTR [-336+rbp], rdx #206.33 + vmovups YMMWORD PTR [-176+rbp], ymm0 #207.20 + setb al #170.30 + mov rdx, QWORD PTR [-304+rbp] #207.59 + mov r13, -1 #46.33 + xor r9d, r9d #42.32 + mov r15, 0xffffffff00000001 #48.33 + mulx r8, rdi, QWORD PTR [-296+rbp] #39.33 + mulx r11, rsi, rdx #38.33 + adox rsi, r8 #42.32 + mov r8d, 0 #44.32 + mulx rcx, r10, QWORD PTR [-288+rbp] #40.33 + adox rdi, rcx #43.32 + mulx rax, r12, QWORD PTR [-280+rbp] #41.33 + mov rdx, r11 #46.33 + adox r10, rax #44.32 + mov rcx, 0x0ffffffff #47.33 + mulx rax, r15, r15 #48.33 + seto r9b #44.32 + clc #45.30 + adcx r9, r12 #45.30 + mulx r13, r12, r13 #46.33 + mulx rcx, r14, rcx #47.33 + mov edx, r8d #49.32 + adox edx, r8d #49.32 + mov rdx, QWORD PTR [-296+rbp] #58.33 + adox r12, rcx #49.32 + mov ecx, 0 #50.32 + adox r14, rcx #50.32 + adox rax, rcx #51.32 + mov ecx, r8d #51.32 + seto cl #51.32 + clc #52.30 + adcx rcx, r15 #52.30 + mov r15d, r8d #53.30 + adox r15d, r8d #53.30 + adox r11, r13 #53.30 + mulx r11, r13, rdx #59.33 + adox rsi, r12 #54.32 + adox rdi, r14 #55.32 + mulx r12, r14, QWORD PTR [-304+rbp] #58.33 + adox r10, rax #56.32 + mulx rax, r15, QWORD PTR [-288+rbp] #60.33 + adox r9, rcx #57.32 + mov ecx, r8d #57.32 + seto cl #57.32 + clc #62.32 + adcx r14, r11 #62.32 + adcx r13, rax #63.32 + mulx r11, rax, QWORD PTR [-280+rbp] #61.33 + mov edx, r8d #65.30 + adcx r15, r11 #64.32 + mov r11d, r8d #64.32 + setb r11b #64.32 + adox edx, r8d #65.30 + adox r11, rax #65.30 + mov eax, r8d #65.30 + seto al #65.30 + clc #66.34 + adcx rsi, r12 #66.34 + mov r12, -1 #71.35 + mov rdx, rsi #71.35 + adcx rdi, r14 #67.34 + mov r14, 0x0ffffffff #72.35 + adcx r10, r13 #68.34 + mov r13, 0xffffffff00000001 #73.35 + adcx r9, r15 #69.34 + mov r15d, r8d #70.34 + adcx rcx, r11 #70.34 + setb r15b #70.34 + mov DWORD PTR [-272+rbp], r15d #70.34[spill] + mulx rax, r15, r12 #71.35 + mulx r12, r11, r14 #72.35 + mulx r14, r13, r13 #73.35 + mov edx, r8d #74.34 + adox edx, r8d #74.34 + mov rdx, QWORD PTR [-288+rbp] #84.35 + adox r15, r12 #74.34 + mov r12d, 0 #75.34 + adox r11, r12 #75.34 + adox r14, r12 #76.34 + mov r12d, r8d #76.34 + seto r12b #76.34 + clc #77.31 + adcx r12, r13 #77.31 + mov r13d, r8d #78.31 + adox r13d, r8d #78.31 + adox rsi, rax #78.31 + mulx rax, r13, QWORD PTR [-296+rbp] #85.35 + adox rdi, r15 #79.34 + adox r10, r11 #80.34 + mulx r11, r15, rdx #86.35 + adox r9, r14 #81.34 + mov r14d, r8d #82.34 + adox rcx, r12 #82.34 + mulx rsi, r12, QWORD PTR [-304+rbp] #84.35 + seto r14b #82.34 + clc #88.34 + adcx r12, rax #88.34 + adcx r13, r11 #89.34 + mulx r11, rax, QWORD PTR [-280+rbp] #87.35 + mov edx, r8d #91.31 + adcx r15, r11 #90.34 + mov r11d, r8d #90.34 + setb r11b #90.34 + adox edx, r8d #91.31 + adox r11, rax #91.31 + clc #92.34 + mov eax, DWORD PTR [-272+rbp] #96.34[spill] + adcx rdi, rsi #92.34 + mov esi, r8d #95.34 + mov rdx, rdi #97.35 + adcx r10, r12 #93.34 + adcx r9, r13 #94.34 + adcx rcx, r15 #95.34 + setb sil #95.34 + mov r15, -1 #95.34 + add eax, r14d #96.34 + cmp r8d, esi #96.34 + mov r14, 0x0ffffffff #98.35 + mulx r15, rsi, r15 #97.35 + adcx rax, r11 #96.34 + mov r11d, r8d #96.34 + setb r11b #96.34 + mov DWORD PTR [-264+rbp], r11d #96.34[spill] + mulx r11, r12, r14 #98.35 + mov r14, 0xffffffff00000001 #99.35 + mulx r14, r13, r14 #99.35 + mov edx, r8d #100.34 + adox edx, r8d #100.34 + mov rdx, QWORD PTR [-280+rbp] #110.35 + adox rsi, r11 #100.34 + mov r11d, 0 #101.34 + adox r12, r11 #101.34 + adox r14, r11 #102.34 + mov r11d, r8d #102.34 + seto r11b #102.34 + clc #103.31 + adcx r11, r13 #103.31 + mov r13d, r8d #104.31 + adox r13d, r8d #104.31 + adox rdi, r15 #104.31 + adox r10, rsi #105.34 + mulx r15, rsi, QWORD PTR [-304+rbp] #110.35 + adox r9, r12 #106.34 + mov r12d, r8d #108.34 + adox rcx, r14 #107.34 + mulx rdi, r14, QWORD PTR [-296+rbp] #111.35 + adox rax, r11 #108.34 + mulx r11, r13, QWORD PTR [-288+rbp] #112.35 + seto r12b #108.34 + clc #114.34 + adcx rsi, rdi #114.34 + adcx r14, r11 #115.34 + mulx rdi, r11, rdx #113.35 + mov edx, r8d #117.31 + adcx r13, rdi #116.34 + mov edi, r8d #116.34 + setb dil #116.34 + adox edx, r8d #117.31 + adox rdi, r11 #117.31 + clc #118.34 + mov r11d, DWORD PTR [-264+rbp] #122.34[spill] + adcx r10, r15 #118.34 + mov r15d, r8d #121.34 + mov rdx, r10 #123.35 + adcx r9, rsi #119.34 + adcx rcx, r14 #120.34 + adcx rax, r13 #121.34 + mov r13, 0x0ffffffff #124.35 + setb r15b #121.34 + xor esi, esi #121.34 + add r11d, r12d #122.34 + mov r12, -1 #122.34 + cmp r8d, r15d #122.34 + adcx r11, rdi #122.34 + mov rdi, 0xffffffff00000001 #125.35 + setb sil #122.34 + mov DWORD PTR [-256+rbp], esi #122.34[spill] + mulx r14, rsi, r12 #123.35 + mulx r12, r15, r13 #124.35 + mulx rdi, r13, rdi #125.35 + mov edx, r8d #126.34 + adox edx, r8d #126.34 + mov edx, r8d #128.34 + adox rsi, r12 #126.34 + mov r12d, 0 #127.34 + adox r15, r12 #127.34 + adox rdi, r12 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r13 #129.31 + mov r13d, r8d #130.31 + adox r13d, r8d #130.31 + adox r10, r14 #130.31 + mov r10d, r8d #134.34 + adox r9, rsi #131.34 + mov r14d, DWORD PTR [-256+rbp] #140.31[spill] + adox rcx, r15 #132.34 + mov r15, r9 #136.34 + adox rax, rdi #133.34 + mov rdi, 0xffffffff00000001 #139.34 + adox r11, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r10b #134.34 + xor r13d, r13d #134.34 + mov rsi, -1 #134.34 + add r14d, r10d #140.31 + sub r15, rsi #136.34 + mov rsi, rcx #137.34 + mov r10, rax #138.34 + sbb rsi, rdx #137.34 + mov rdx, r11 #139.34 + sbb r10, r12 #138.34 + sbb rdx, rdi #139.34 + setb r13b #139.34 + cmp r8d, r13d #140.31 + sbb r14, r12 #140.31 + setb r8b #140.31 + testq r8, r8; + cmovnzq r11, rdx; + testq r8, r8; + cmovnzq rax, r10; + testq r8, r8; + cmovnzq rcx, rsi; + testq r8, r8; + cmovnzq r9, r15; + mov QWORD PTR [-152+rbp], r15 #9.0 + mov QWORD PTR [-176+rbp], rdx #207.37 + mov QWORD PTR [-168+rbp], r10 #207.37 + mov QWORD PTR [-160+rbp], rsi #207.37 + vmovups YMMWORD PTR [-208+rbp], ymm0 #208.20 + mov rdx, QWORD PTR [-336+rbp] #208.59 + mov r15, 0x0ffffffff #47.33 + xor r14d, r14d #42.32 + xor r13d, r13d #42.32 + xor r8d, r8d #42.32 + mulx rsi, r9, QWORD PTR [-328+rbp] #39.33 + mulx r12, rdi, rdx #38.33 + adcx rdi, rsi #42.32 + mulx rcx, r10, QWORD PTR [-320+rbp] #40.33 + adcx r9, rcx #43.32 + mov rcx, -1 #46.33 + mulx rax, r11, QWORD PTR [-312+rbp] #41.33 + mov rdx, r12 #46.33 + adcx r10, rax #44.32 + mulx rax, r15, r15 #47.33 + setb r14b #44.32 + adox r13d, r8d #45.30 + adox r14, r11 #45.30 + mulx r13, r11, rcx #46.33 + mov ecx, 0 #50.32 + clc #49.32 + mov rsi, 0xffffffff00000001 #48.33 + adcx r11, rax #49.32 + mulx rax, rsi, rsi #48.33 + mov edx, r8d #52.30 + adcx r15, rcx #50.32 + adcx rax, rcx #51.32 + mov ecx, r8d #51.32 + setb cl #51.32 + adox edx, r8d #52.30 + adox rcx, rsi #52.30 + mov rdx, QWORD PTR [-328+rbp] #58.33 + clc #53.30 + adcx r12, r13 #53.30 + mov r13d, r8d #62.32 + adcx rdi, r11 #54.32 + adcx r9, r15 #55.32 + adcx r10, rax #56.32 + mulx rax, r12, rdx #59.33 + adcx r14, rcx #57.32 + mov QWORD PTR [-240+rbp], r14 #57.32[spill] + mov r14d, r8d #57.32 + setb r14b #57.32 + adox r13d, r8d #62.32 + mov r13d, 0 #75.34 + mov QWORD PTR [-232+rbp], r14 #70.34[spill] + mulx r14, r15, QWORD PTR [-336+rbp] #58.33 + adox r15, rax #62.32 + mov eax, r8d #64.32 + mulx r11, rcx, QWORD PTR [-320+rbp] #60.33 + adox r12, r11 #63.32 + mulx rdx, rsi, QWORD PTR [-312+rbp] #61.33 + adox rcx, rdx #64.32 + seto al #64.32 + clc #65.30 + adcx rax, rsi #65.30 + mov esi, r8d #66.34 + adox esi, r8d #66.34 + mov rsi, QWORD PTR [-240+rbp] #69.34[spill] + adox rdi, r14 #66.34 + mov r14, QWORD PTR [-232+rbp] #70.34[spill] + mov rdx, rdi #71.35 + adox r9, r15 #67.34 + mov r15, 0x0ffffffff #72.35 + adox r10, r12 #68.34 + mov r12d, r8d #70.34 + adox rsi, rcx #69.34 + mov rcx, -1 #71.35 + adox r14, rax #70.34 + seto r12b #70.34 + clc #74.34 + mov DWORD PTR [-224+rbp], r12d #70.34[spill] + mulx r12, rax, rcx #71.35 + mulx rcx, r11, r15 #72.35 + mov r15, 0xffffffff00000001 #73.35 + adcx rax, rcx #74.34 + mulx r15, rcx, r15 #73.35 + mov edx, r8d #77.31 + adcx r11, r13 #75.34 + adcx r15, r13 #76.34 + mov r13d, r8d #76.34 + setb r13b #76.34 + adox edx, r8d #77.31 + adox r13, rcx #77.31 + mov rdx, QWORD PTR [-320+rbp] #84.35 + clc #78.31 + adcx rdi, r12 #78.31 + mov edi, r8d #82.34 + adcx r9, rax #79.34 + mulx rax, r12, QWORD PTR [-328+rbp] #85.35 + adcx r10, r11 #80.34 + adcx rsi, r15 #81.34 + adcx r14, r13 #82.34 + mov r13d, r8d #88.34 + mov QWORD PTR [-232+rbp], r14 #82.34[spill] + setb dil #82.34 + adox r13d, r8d #88.34 + mulx r14, r15, QWORD PTR [-336+rbp] #84.35 + adox r15, rax #88.34 + mov DWORD PTR [-216+rbp], edi #82.34[spill] + mulx r11, rdi, rdx #86.35 + adox r12, r11 #89.34 + mov r11d, r8d #90.34 + mulx rdx, rcx, QWORD PTR [-312+rbp] #87.35 + adox rdi, rdx #90.34 + seto r11b #90.34 + clc #91.31 + adcx r11, rcx #91.31 + mov ecx, r8d #92.34 + adox ecx, r8d #92.34 + mov rcx, QWORD PTR [-232+rbp] #95.34[spill] + adox r9, r14 #92.34 + mov r14d, r8d #95.34 + mov eax, DWORD PTR [-224+rbp] #96.34[spill] + mov rdx, r9 #97.35 + adox r10, r15 #93.34 + adox rsi, r12 #94.34 + adox rcx, rdi #95.34 + mov rdi, 0x0ffffffff #98.35 + seto r14b #95.34 + xor r15d, r15d #95.34 + mov r12, -1 #95.34 + add eax, DWORD PTR [-216+rbp] #96.34[spill] + cmp r8d, r14d #96.34 + mov r14, 0xffffffff00000001 #99.35 + adcx rax, r11 #96.34 + mulx r11, rdi, rdi #98.35 + setb r15b #96.34 + mov DWORD PTR [-144+rbp], r15d #96.34[spill] + mulx r15, r13, r12 #97.35 + mulx r14, r12, r14 #99.35 + mov edx, r8d #100.34 + adox edx, r8d #100.34 + mov rdx, QWORD PTR [-312+rbp] #110.35 + adox r13, r11 #100.34 + mov r11d, 0 #101.34 + adox rdi, r11 #101.34 + adox r14, r11 #102.34 + mov r11d, r8d #102.34 + seto r11b #102.34 + clc #103.31 + adcx r11, r12 #103.31 + mov r12d, r8d #104.31 + adox r12d, r8d #104.31 + mov r12d, r8d #108.34 + adox r9, r15 #104.31 + adox r10, r13 #105.34 + adox rsi, rdi #106.34 + mulx r9, rdi, QWORD PTR [-328+rbp] #111.35 + adox rcx, r14 #107.34 + mulx r14, r15, QWORD PTR [-336+rbp] #110.35 + adox rax, r11 #108.34 + mulx r11, r13, QWORD PTR [-320+rbp] #112.35 + seto r12b #108.34 + clc #114.34 + adcx r15, r9 #114.34 + adcx rdi, r11 #115.34 + mulx r9, r11, rdx #113.35 + mov edx, r8d #117.31 + adcx r13, r9 #116.34 + mov r9d, r8d #116.34 + setb r9b #116.34 + adox edx, r8d #117.31 + adox r9, r11 #117.31 + clc #118.34 + mov r11d, DWORD PTR [-144+rbp] #122.34[spill] + adcx r10, r14 #118.34 + mov rdx, r10 #123.35 + adcx rsi, r15 #119.34 + mov r15, -1 #123.35 + adcx rcx, rdi #120.34 + mulx r15, rdi, r15 #123.35 + adcx rax, r13 #121.34 + mov r13d, r8d #121.34 + setb r13b #121.34 + xor r14d, r14d #121.34 + add r11d, r12d #122.34 + cmp r8d, r13d #122.34 + mov r12, 0x0ffffffff #124.35 + adcx r11, r9 #122.34 + mov r9, 0xffffffff00000001 #125.35 + mulx r9, r13, r9 #125.35 + setb r14b #122.34 + mov DWORD PTR [-136+rbp], r14d #122.34[spill] + mulx r12, r14, r12 #124.35 + mov edx, r8d #126.34 + adox edx, r8d #126.34 + mov edx, r8d #128.34 + adox rdi, r12 #126.34 + mov r12d, 0 #127.34 + adox r14, r12 #127.34 + adox r9, r12 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r13 #129.31 + mov r13d, r8d #130.31 + adox r13d, r8d #130.31 + adox r10, r15 #130.31 + mov r10d, r8d #134.34 + adox rsi, rdi #131.34 + mov edi, DWORD PTR [-136+rbp] #140.31[spill] + adox rcx, r14 #132.34 + mov r14, rsi #136.34 + adox rax, r9 #133.34 + mov r9, 0xffffffff00000001 #139.34 + adox r11, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r10b #134.34 + xor r13d, r13d #134.34 + mov r15, -1 #134.34 + add edi, r10d #140.31 + sub r14, r15 #136.34 + mov r15, rcx #137.34 + mov r10, rax #138.34 + sbb r15, rdx #137.34 + mov rdx, r11 #139.34 + sbb r10, r12 #138.34 + sbb rdx, r9 #139.34 + setb r13b #139.34 + cmp r8d, r13d #140.31 + sbb rdi, r12 #140.31 + setb r8b #140.31 + testq r8, r8; + cmovnzq r11, rdx; + testq r8, r8; + cmovnzq rax, r10; + testq r8, r8; + cmovnzq rcx, r15; + testq r8, r8; + cmovnzq rsi, r14; + mov QWORD PTR [-184+rbp], r14 #9.0 + mov QWORD PTR [-208+rbp], rdx #208.37 + mov QWORD PTR [-200+rbp], r10 #208.37 + mov QWORD PTR [-192+rbp], r15 #208.37 + vmovups YMMWORD PTR [-272+rbp], ymm0 #209.21 + mov rdx, QWORD PTR [-176+rbp] #209.61 + mov r15, 0x0ffffffff #47.33 + xor r14d, r14d #42.32 + xor r13d, r13d #42.32 + xor r8d, r8d #42.32 + mulx r12, rdi, QWORD PTR [-304+rbp] #38.33 + mulx rsi, r9, QWORD PTR [-296+rbp] #39.33 + adcx rdi, rsi #42.32 + mulx rcx, r10, QWORD PTR [-288+rbp] #40.33 + adcx r9, rcx #43.32 + mov rcx, -1 #46.33 + mulx rax, r11, QWORD PTR [-280+rbp] #41.33 + mov rdx, r12 #46.33 + adcx r10, rax #44.32 + mulx rax, r15, r15 #47.33 + setb r14b #44.32 + adox r13d, r8d #45.30 + adox r14, r11 #45.30 + mulx r13, r11, rcx #46.33 + mov ecx, 0 #50.32 + clc #49.32 + mov rsi, 0xffffffff00000001 #48.33 + adcx r11, rax #49.32 + mulx rax, rsi, rsi #48.33 + mov edx, r8d #52.30 + adcx r15, rcx #50.32 + adcx rax, rcx #51.32 + mov ecx, r8d #51.32 + setb cl #51.32 + adox edx, r8d #52.30 + adox rcx, rsi #52.30 + mov rdx, QWORD PTR [-168+rbp] #58.33 + clc #53.30 + adcx r12, r13 #53.30 + mov r13d, r8d #62.32 + adcx rdi, r11 #54.32 + adcx r9, r15 #55.32 + adcx r10, rax #56.32 + mulx rax, r12, QWORD PTR [-296+rbp] #59.33 + adcx r14, rcx #57.32 + mov QWORD PTR [-144+rbp], r14 #57.32[spill] + mov r14d, r8d #57.32 + setb r14b #57.32 + adox r13d, r8d #62.32 + mov r13d, 0 #75.34 + mov QWORD PTR [-136+rbp], r14 #70.34[spill] + mulx r14, r15, QWORD PTR [-304+rbp] #58.33 + adox r15, rax #62.32 + mov eax, r8d #64.32 + mulx r11, rcx, QWORD PTR [-288+rbp] #60.33 + adox r12, r11 #63.32 + mulx rdx, rsi, QWORD PTR [-280+rbp] #61.33 + adox rcx, rdx #64.32 + seto al #64.32 + clc #65.30 + adcx rax, rsi #65.30 + mov esi, r8d #66.34 + adox esi, r8d #66.34 + mov rsi, QWORD PTR [-144+rbp] #69.34[spill] + adox rdi, r14 #66.34 + mov r14, QWORD PTR [-136+rbp] #70.34[spill] + mov rdx, rdi #71.35 + adox r9, r15 #67.34 + mov r15, 0x0ffffffff #72.35 + adox r10, r12 #68.34 + mov r12d, r8d #70.34 + adox rsi, rcx #69.34 + mov rcx, -1 #71.35 + adox r14, rax #70.34 + seto r12b #70.34 + clc #74.34 + mov DWORD PTR [-128+rbp], r12d #70.34[spill] + mulx r12, rax, rcx #71.35 + mulx rcx, r11, r15 #72.35 + mov r15, 0xffffffff00000001 #73.35 + adcx rax, rcx #74.34 + mulx r15, rcx, r15 #73.35 + mov edx, r8d #77.31 + adcx r11, r13 #75.34 + adcx r15, r13 #76.34 + mov r13d, r8d #76.34 + setb r13b #76.34 + adox edx, r8d #77.31 + adox r13, rcx #77.31 + mov rdx, QWORD PTR [-160+rbp] #84.35 + clc #78.31 + adcx rdi, r12 #78.31 + mov edi, r8d #82.34 + adcx r9, rax #79.34 + mulx rax, r12, QWORD PTR [-296+rbp] #85.35 + adcx r10, r11 #80.34 + adcx rsi, r15 #81.34 + adcx r14, r13 #82.34 + mov r13d, r8d #88.34 + mov QWORD PTR [-136+rbp], r14 #82.34[spill] + setb dil #82.34 + adox r13d, r8d #88.34 + mulx r14, r15, QWORD PTR [-304+rbp] #84.35 + adox r15, rax #88.34 + mov DWORD PTR [-120+rbp], edi #82.34[spill] + mulx r11, rdi, QWORD PTR [-288+rbp] #86.35 + adox r12, r11 #89.34 + mov r11d, r8d #90.34 + mulx rdx, rcx, QWORD PTR [-280+rbp] #87.35 + adox rdi, rdx #90.34 + seto r11b #90.34 + clc #91.31 + adcx r11, rcx #91.31 + mov ecx, r8d #92.34 + adox ecx, r8d #92.34 + mov rcx, QWORD PTR [-136+rbp] #95.34[spill] + adox r9, r14 #92.34 + mov r14d, r8d #95.34 + mov eax, DWORD PTR [-128+rbp] #96.34[spill] + mov rdx, r9 #97.35 + adox r10, r15 #93.34 + adox rsi, r12 #94.34 + adox rcx, rdi #95.34 + mov rdi, 0x0ffffffff #98.35 + seto r14b #95.34 + xor r15d, r15d #95.34 + mov r12, -1 #95.34 + add eax, DWORD PTR [-120+rbp] #96.34[spill] + cmp r8d, r14d #96.34 + mov r14, 0xffffffff00000001 #99.35 + adcx rax, r11 #96.34 + mulx r11, rdi, rdi #98.35 + setb r15b #96.34 + mov DWORD PTR [-72+rbp], r15d #96.34[spill] + mulx r15, r13, r12 #97.35 + mulx r14, r12, r14 #99.35 + mov edx, r8d #100.34 + adox edx, r8d #100.34 + mov rdx, QWORD PTR [-152+rbp] #110.35 + adox r13, r11 #100.34 + mov r11d, 0 #101.34 + adox rdi, r11 #101.34 + adox r14, r11 #102.34 + mov r11d, r8d #102.34 + seto r11b #102.34 + clc #103.31 + adcx r11, r12 #103.31 + mov r12d, r8d #104.31 + adox r12d, r8d #104.31 + mov r12d, r8d #108.34 + adox r9, r15 #104.31 + adox r10, r13 #105.34 + adox rsi, rdi #106.34 + mulx r9, rdi, QWORD PTR [-296+rbp] #111.35 + adox rcx, r14 #107.34 + mulx r14, r15, QWORD PTR [-304+rbp] #110.35 + adox rax, r11 #108.34 + mulx r11, r13, QWORD PTR [-288+rbp] #112.35 + seto r12b #108.34 + clc #114.34 + adcx r15, r9 #114.34 + adcx rdi, r11 #115.34 + mulx r9, r11, QWORD PTR [-280+rbp] #113.35 + mov edx, r8d #117.31 + adcx r13, r9 #116.34 + mov r9d, r8d #116.34 + setb r9b #116.34 + adox edx, r8d #117.31 + adox r9, r11 #117.31 + clc #118.34 + mov r11d, DWORD PTR [-72+rbp] #122.34[spill] + adcx r10, r14 #118.34 + mov rdx, r10 #123.35 + adcx rsi, r15 #119.34 + mov r15, -1 #123.35 + adcx rcx, rdi #120.34 + mulx r15, rdi, r15 #123.35 + adcx rax, r13 #121.34 + mov r13d, r8d #121.34 + setb r13b #121.34 + xor r14d, r14d #121.34 + add r11d, r12d #122.34 + cmp r8d, r13d #122.34 + mov r12, 0x0ffffffff #124.35 + adcx r11, r9 #122.34 + mov r9, 0xffffffff00000001 #125.35 + mulx r9, r13, r9 #125.35 + setb r14b #122.34 + mov DWORD PTR [-64+rbp], r14d #122.34[spill] + mulx r12, r14, r12 #124.35 + mov edx, r8d #126.34 + adox edx, r8d #126.34 + mov edx, r8d #128.34 + adox rdi, r12 #126.34 + mov r12d, 0 #127.34 + adox r14, r12 #127.34 + adox r9, r12 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r13 #129.31 + mov r13d, r8d #130.31 + adox r13d, r8d #130.31 + adox r10, r15 #130.31 + mov r10d, r8d #134.34 + adox rsi, rdi #131.34 + mov edi, DWORD PTR [-64+rbp] #140.31[spill] + adox rcx, r14 #132.34 + mov r14, rsi #136.34 + adox rax, r9 #133.34 + mov r9, 0xffffffff00000001 #139.34 + adox r11, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r10b #134.34 + xor r13d, r13d #134.34 + mov r15, -1 #134.34 + add edi, r10d #140.31 + sub r14, r15 #136.34 + mov r15, rcx #137.34 + mov r10, rax #138.34 + sbb r15, rdx #137.34 + mov rdx, r11 #139.34 + sbb r10, r12 #138.34 + sbb rdx, r9 #139.34 + setb r13b #139.34 + cmp r8d, r13d #140.31 + sbb rdi, r12 #140.31 + setb r8b #140.31 + testq r8, r8; + cmovnzq r11, rdx; + mov r11d, 1 #9.0 + testq r8, r8; + cmovnzq rax, r10; + testq r8, r8; + cmovnzq rcx, r15; + testq r8, r8; + cmovnzq rsi, r14; + mov rsi, QWORD PTR [-96+rbp] #9.0[spill] + mov rdi, QWORD PTR [-112+rbp] #9.0[spill] + mov QWORD PTR [-248+rbp], r14 #9.0 + mov r14, 0xffffffff00000000 #9.0 + mov QWORD PTR [-272+rbp], rdx #209.35 + mov QWORD PTR [-264+rbp], r10 #209.35 + mov QWORD PTR [-256+rbp], r15 #209.35 + mov rax, QWORD PTR [88+rsi] #9.0 + testq rdi, rdi; + cmovnzq rax, r11; + mov rax, -1 #9.0 + mov QWORD PTR [88+rsi], r11 #210.5 + mov rdx, QWORD PTR [80+rsi] #9.0 + testq rdi, rdi; + cmovnzq rdx, r14; + mov rdx, -1 #9.0 + mov QWORD PTR [80+rsi], r14 #211.5 + mov rcx, QWORD PTR [72+rsi] #9.0 + testq rdi, rdi; + cmovnzq rcx, rax; + mov QWORD PTR [72+rsi], rax #212.5 + mov r9, QWORD PTR [64+rsi] #9.0 + testq rdi, rdi; + cmovnzq r9, rdx; + mov r10, QWORD PTR [-88+rbp] #9.0[spill] + mov QWORD PTR [64+rsi], rdx #213.5 + mov r13, QWORD PTR [-80+rbp] #9.0[spill] + mov r12, QWORD PTR [88+r10] #9.0 + testq r13, r13; + cmovnzq r11, r12; + mov QWORD PTR [88+rsi], r12 #9.0 + mov r11, QWORD PTR [80+r10] #9.0 + testq r13, r13; + cmovnzq r14, r11; + mov QWORD PTR [80+rsi], r11 #9.0 + mov r12, QWORD PTR [72+r10] #9.0 + testq r13, r13; + cmovnzq rax, r12; + mov QWORD PTR [72+rsi], r12 #9.0 + mov rcx, QWORD PTR [64+r10] #9.0 + testq r13, r13; + cmovnzq rdx, rcx; + mov QWORD PTR [64+rsi], rcx #9.0 + vmovups YMMWORD PTR [-240+rbp], ymm0 #218.21 + mov r8, r10 #38.33 + mov rdx, QWORD PTR [-176+rbp] #218.60 + xor r14d, r14d #42.32 + xor r13d, r13d #42.32 + xor esi, esi #42.32 + mulx r12, rdi, QWORD PTR [r8] #38.33 + mulx rcx, r9, QWORD PTR [8+r8] #39.33 + adcx rdi, rcx #42.32 + mov rcx, -1 #46.33 + mulx rax, r10, QWORD PTR [16+r8] #40.33 + adcx r9, rax #43.32 + mov rax, 0x0ffffffff #47.33 + mulx r15, r11, QWORD PTR [24+r8] #41.33 + mov r8d, 0 #44.32 + adcx r10, r15 #44.32 + setb r14b #44.32 + mov rdx, r12 #46.33 + adox r13d, r8d #45.30 + adox r14, r11 #45.30 + mulx r13, r11, rcx #46.33 + mov ecx, 0 #50.32 + seto sil #45.30 + clc #49.32 + mulx rsi, r15, rax #47.33 + adcx r11, rsi #49.32 + mov rsi, 0xffffffff00000001 #48.33 + mulx rax, rsi, rsi #48.33 + mov edx, r8d #52.30 + adcx r15, rcx #50.32 + adcx rax, rcx #51.32 + mov ecx, r8d #51.32 + setb cl #51.32 + adox edx, r8d #52.30 + adox rcx, rsi #52.30 + mov rdx, QWORD PTR [-168+rbp] #58.33 + clc #53.30 + adcx r12, r13 #53.30 + mov r13, QWORD PTR [-88+rbp] #58.33[spill] + adcx rdi, r11 #54.32 + adcx r9, r15 #55.32 + mov r15d, r8d #57.32 + adcx r10, rax #56.32 + mulx rax, r11, QWORD PTR [8+r13] #59.33 + adcx r14, rcx #57.32 + mov QWORD PTR [-304+rbp], r14 #57.32[spill] + setb r15b #57.32 + mov QWORD PTR [-296+rbp], r15 #70.34[spill] + mulx r12, r14, QWORD PTR [r13] #58.33 + mulx r15, rcx, QWORD PTR [16+r13] #60.33 + mulx rdx, rsi, QWORD PTR [24+r13] #61.33 + mov r13d, r8d #62.32 + adox r13d, r8d #62.32 + mov r13d, 0 #75.34 + adox r14, rax #62.32 + mov eax, r8d #64.32 + adox r11, r15 #63.32 + mov r15d, r8d #66.34 + adox rcx, rdx #64.32 + seto al #64.32 + clc #65.30 + adcx rax, rsi #65.30 + adox r15d, r8d #66.34 + mov rsi, QWORD PTR [-304+rbp] #69.34[spill] + mov r15, 0xffffffff00000001 #73.35 + adox rdi, r12 #66.34 + mov r12d, r8d #70.34 + mov rdx, rdi #71.35 + adox r9, r14 #67.34 + mov r14, QWORD PTR [-296+rbp] #70.34[spill] + adox r10, r11 #68.34 + mov r11, 0x0ffffffff #72.35 + adox rsi, rcx #69.34 + mov rcx, -1 #71.35 + adox r14, rax #70.34 + seto r12b #70.34 + clc #74.34 + mov DWORD PTR [-288+rbp], r12d #70.34[spill] + mulx r12, rax, rcx #71.35 + mulx rcx, r11, r11 #72.35 + adcx rax, rcx #74.34 + mulx r15, rcx, r15 #73.35 + mov edx, r8d #77.31 + adcx r11, r13 #75.34 + adcx r15, r13 #76.34 + mov r13d, r8d #76.34 + setb r13b #76.34 + adox edx, r8d #77.31 + adox r13, rcx #77.31 + mov rdx, QWORD PTR [-160+rbp] #84.35 + clc #78.31 + adcx rdi, r12 #78.31 + mov edi, r8d #82.34 + adcx r9, rax #79.34 + adcx r10, r11 #80.34 + adcx rsi, r15 #81.34 + adcx r14, r13 #82.34 + mov r13, QWORD PTR [-88+rbp] #84.35[spill] + setb dil #82.34 + mov QWORD PTR [-296+rbp], r14 #82.34[spill] + mov DWORD PTR [-280+rbp], edi #82.34[spill] + mulx r12, r14, QWORD PTR [r13] #84.35 + mulx rax, r11, QWORD PTR [8+r13] #85.35 + mulx r15, rdi, QWORD PTR [16+r13] #86.35 + mulx rdx, rcx, QWORD PTR [24+r13] #87.35 + mov r13d, r8d #88.34 + adox r13d, r8d #88.34 + mov r13d, r8d #90.34 + adox r14, rax #88.34 + adox r11, r15 #89.34 + mov r15d, r8d #95.34 + adox rdi, rdx #90.34 + seto r13b #90.34 + clc #91.31 + adcx r13, rcx #91.31 + mov ecx, r8d #92.34 + adox ecx, r8d #92.34 + mov rcx, QWORD PTR [-296+rbp] #95.34[spill] + adox r9, r12 #92.34 + mov eax, DWORD PTR [-288+rbp] #96.34[spill] + mov rdx, r9 #97.35 + adox r10, r14 #93.34 + mov r14, 0x0ffffffff #98.35 + adox rsi, r11 #94.34 + adox rcx, rdi #95.34 + seto r15b #95.34 + xor r12d, r12d #95.34 + mov rdi, -1 #95.34 + add eax, DWORD PTR [-280+rbp] #96.34[spill] + cmp r8d, r15d #96.34 + adcx rax, r13 #96.34 + mulx r15, r13, rdi #97.35 + setb r12b #96.34 + mov DWORD PTR [-72+rbp], r12d #96.34[spill] + mov r12, 0xffffffff00000001 #99.35 + mulx r14, rdi, r14 #98.35 + mulx r11, r12, r12 #99.35 + mov edx, r8d #100.34 + adox edx, r8d #100.34 + mov rdx, QWORD PTR [-152+rbp] #110.35 + adox r13, r14 #100.34 + mov r14d, 0 #101.34 + adox rdi, r14 #101.34 + adox r11, r14 #102.34 + mov r14d, r8d #102.34 + seto r14b #102.34 + clc #103.31 + adcx r14, r12 #103.31 + mov r12d, r8d #104.31 + adox r12d, r8d #104.31 + mov r12, QWORD PTR [-88+rbp] #110.35[spill] + adox r9, r15 #104.31 + mov r9d, r8d #108.34 + adox r10, r13 #105.34 + mulx r13, r15, QWORD PTR [r12] #110.35 + adox rsi, rdi #106.34 + adox rcx, r11 #107.34 + adox rax, r14 #108.34 + mulx r11, r14, QWORD PTR [8+r12] #111.35 + seto r9b #108.34 + clc #114.34 + adcx r15, r11 #114.34 + mulx r11, rdi, QWORD PTR [16+r12] #112.35 + adcx r14, r11 #115.34 + mulx r12, r11, QWORD PTR [24+r12] #113.35 + mov edx, r8d #117.31 + adcx rdi, r12 #116.34 + mov r12d, r8d #116.34 + setb r12b #116.34 + adox edx, r8d #117.31 + adox r12, r11 #117.31 + clc #118.34 + adcx r10, r13 #118.34 + mov rdx, r10 #123.35 + adcx rsi, r15 #119.34 + mov r15d, r8d #121.34 + adcx rcx, r14 #120.34 + mov r14, 0x0ffffffff #124.35 + adcx rax, rdi #121.34 + mov edi, DWORD PTR [-72+rbp] #122.34[spill] + setb r15b #121.34 + add edi, r9d #122.34 + xor r9d, r9d #122.34 + cmp r8d, r15d #122.34 + mov r15, -1 #123.35 + adcx rdi, r12 #122.34 + mulx r12, r11, r15 #123.35 + setb r9b #122.34 + mov DWORD PTR [-64+rbp], r9d #122.34[spill] + mov r9, 0xffffffff00000001 #125.35 + mulx r14, r15, r14 #124.35 + mulx r9, r13, r9 #125.35 + mov edx, r8d #126.34 + adox edx, r8d #126.34 + mov edx, r8d #128.34 + adox r11, r14 #126.34 + mov r14d, 0 #127.34 + adox r15, r14 #127.34 + adox r9, r14 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r13 #129.31 + mov r13d, r8d #130.31 + adox r13d, r8d #130.31 + adox r10, r12 #130.31 + mov r10d, r8d #134.34 + adox rsi, r11 #131.34 + mov r11d, DWORD PTR [-64+rbp] #140.31[spill] + adox rcx, r15 #132.34 + mov r15, rsi #136.34 + adox rax, r9 #133.34 + mov r9, 0xffffffff00000001 #139.34 + adox rdi, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r10b #134.34 + xor r13d, r13d #134.34 + mov r12, -1 #134.34 + add r11d, r10d #140.31 + sub r15, r12 #136.34 + mov r12, rcx #137.34 + mov r10, rax #138.34 + sbb r12, rdx #137.34 + mov rdx, rdi #139.34 + sbb r10, r14 #138.34 + sbb rdx, r9 #139.34 + setb r13b #139.34 + cmp r8d, r13d #140.31 + sbb r11, r14 #140.31 + setb r8b #140.31 + testq r8, r8; + cmovnzq rdi, rdx; + testq r8, r8; + cmovnzq rax, r10; + testq r8, r8; + cmovnzq rcx, r12; + testq r8, r8; + cmovnzq rsi, r15; + mov QWORD PTR [-152+rbp], r15 #9.0 + mov QWORD PTR [-176+rbp], rdx #218.35 + mov QWORD PTR [-168+rbp], r10 #218.35 + mov QWORD PTR [-160+rbp], r12 #218.35 + vmovups YMMWORD PTR [-144+rbp], ymm0 #219.21 + mov r12, QWORD PTR [-240+rbp] #219.64 + xor r8d, r8d #21.32 + xor edi, edi #18.32 + xor r13d, r13d #18.32 + mov r11, QWORD PTR [-232+rbp] #219.88 + adcx r12, r12 #18.32 + mov r15, 0x0ffffffff #23.32 + mov r10, QWORD PTR [-224+rbp] #219.80 + mov rsi, r12 #22.32 + adcx r11, r11 #19.32 + mov r13, 0xffffffff00000001 #25.32 + mov r9, QWORD PTR [-216+rbp] #219.72 + mov rcx, r11 #23.32 + adcx r10, r10 #20.32 + mov rdx, r10 #24.32 + adcx r9, r9 #21.32 + mov rax, r9 #25.32 + setb dil #21.32 + mov r14, -1 #21.32 + sub rsi, r14 #22.32 + mov r14d, 0 #24.32 + sbb rcx, r15 #23.32 + sbb rdx, r14 #24.32 + sbb rax, r13 #25.32 + sbb rdi, r14 #26.30 + setb r8b #26.30 + testq r8, r8; + cmovnzq r9, rax; + testq r8, r8; + cmovnzq r10, rdx; + testq r8, r8; + cmovnzq r11, rcx; + testq r8, r8; + cmovnzq r12, rsi; + mov QWORD PTR [-120+rbp], rsi #9.0 + mov QWORD PTR [-144+rbp], rax #219.35 + mov QWORD PTR [-136+rbp], rdx #219.35 + mov QWORD PTR [-128+rbp], rcx #219.35 + vmovups YMMWORD PTR [-176+rbp], ymm0 #220.20 + mov r13, QWORD PTR [-208+rbp] #159.32 + xor r10d, r10d #162.32 + xor r15d, r15d #159.32 + sub r13, QWORD PTR [-144+rbp] #159.32 + mov r14, QWORD PTR [-200+rbp] #160.32 + sbb r14, QWORD PTR [-136+rbp] #160.32 + mov r12, QWORD PTR [-192+rbp] #161.32 + sbb r12, QWORD PTR [-128+rbp] #161.32 + mov r11, QWORD PTR [-184+rbp] #162.32 + mov r8, 0xffffffff00000001 #170.30 + sbb r11, QWORD PTR [-120+rbp] #162.32 + setb r15b #162.32 + mov rsi, -1 #162.32 + xor edi, edi #162.32 + xor r9d, r9d #162.32 + xor ecx, ecx #162.32 + testq r15, r15; + cmovnzq rsi, rdi; + xor eax, eax #165.32 + mov edx, edi #167.32 + adox r13, rdi #165.32 + mov QWORD PTR [-152+rbp], r13 #220.34 + adox r14, rdx #167.32 + mov QWORD PTR [-160+rbp], r14 #220.34 + adox r12, r9 #168.32 + mov QWORD PTR [-168+rbp], r12 #220.34 + seto cl #168.32 + mov rdx, -1 #168.32 + and rdi, r8 #170.30 + cmp r10d, ecx #170.30 + adcx r11, rdi #170.30 + xor edi, edi #9.0 + mov QWORD PTR [-176+rbp], r11 #220.34 + sub r11, QWORD PTR [-272+rbp] #159.32 + sbb r12, QWORD PTR [-264+rbp] #160.32 + sbb r14, QWORD PTR [-256+rbp] #161.32 + sbb r13, QWORD PTR [-248+rbp] #162.32 + setb al #162.32 + testq rax, rax; + cmovnzq rdx, rdi; + xor r15d, r15d #165.32 + mov ecx, edi #167.32 + adox r11, rdi #165.32 + mov rsi, QWORD PTR [-96+rbp] #174.1[spill] + adox r12, rcx #167.32 + mov QWORD PTR [24+rsi], r11 #174.1 + adox r14, r9 #168.32 + mov r9d, r10d #168.32 + mov QWORD PTR [8+rsi], r14 #172.1 + seto r9b #168.32 + and rdi, r8 #170.30 + cmp r10d, r9d #170.30 + mov r8, QWORD PTR [-104+rbp] #9.0[spill] + adcx r13, rdi #170.30 + mov QWORD PTR [16+rsi], r12 #173.1 + mov QWORD PTR [rsi], r13 #171.1 + mov rcx, QWORD PTR [24+r8] #9.0 + mov rdi, QWORD PTR [-112+rbp] #9.0[spill] + testq rdi, rdi; + cmovnzq r11, rcx; + mov QWORD PTR [24+rsi], rcx #222.5 + mov rdx, QWORD PTR [16+r8] #9.0 + testq rdi, rdi; + cmovnzq r12, rdx; + mov QWORD PTR [16+rsi], rdx #223.5 + mov rax, QWORD PTR [8+r8] #9.0 + testq rdi, rdi; + cmovnzq r14, rax; + mov QWORD PTR [8+rsi], rax #224.5 + mov r8, QWORD PTR [r8] #9.0 + testq rdi, rdi; + cmovnzq r13, r8; + mov r14, QWORD PTR [-88+rbp] #9.0[spill] + mov QWORD PTR [rsi], r8 #225.5 + mov rdi, QWORD PTR [-80+rbp] #9.0[spill] + mov r13, QWORD PTR [24+r14] #9.0 + testq rdi, rdi; + cmovnzq rcx, r13; + mov QWORD PTR [24+rsi], r13 #9.0 + mov r11, QWORD PTR [16+r14] #9.0 + testq rdi, rdi; + cmovnzq rdx, r11; + mov QWORD PTR [16+rsi], r11 #9.0 + mov r12, QWORD PTR [8+r14] #9.0 + testq rdi, rdi; + cmovnzq rax, r12; + mov QWORD PTR [8+rsi], r12 #9.0 + mov rax, QWORD PTR [r14] #9.0 + testq rdi, rdi; + cmovnzq r8, rax; + mov QWORD PTR [rsi], rax #9.0 + vmovups YMMWORD PTR [-304+rbp], ymm0 #230.21 + mov r10, r14 #38.33 + mov r13, -1 #46.33 + mov rdx, QWORD PTR [-272+rbp] #230.63 + xor edi, edi #42.32 + mov r15, 0xffffffff00000001 #48.33 + mulx r11, rsi, QWORD PTR [32+r10] #38.33 + mulx rcx, r8, QWORD PTR [40+r10] #39.33 + adox rsi, rcx #42.32 + mov rcx, 0x0ffffffff #47.33 + mulx rax, r9, QWORD PTR [48+r10] #40.33 + adox r8, rax #43.32 + mulx r10, r12, QWORD PTR [56+r10] #41.33 + mov rdx, r11 #46.33 + adox r9, r10 #44.32 + mov r10d, edi #44.32 + mulx rax, r15, r15 #48.33 + seto r10b #44.32 + clc #45.30 + adcx r10, r12 #45.30 + mulx r13, r12, r13 #46.33 + mulx rcx, r14, rcx #47.33 + mov edx, edi #49.32 + adox edx, edi #49.32 + mov rdx, QWORD PTR [-264+rbp] #58.33 + adox r12, rcx #49.32 + mov ecx, 0 #50.32 + adox r14, rcx #50.32 + adox rax, rcx #51.32 + mov ecx, edi #51.32 + seto cl #51.32 + clc #52.30 + adcx rcx, r15 #52.30 + mov r15d, edi #53.30 + adox r15d, edi #53.30 + adox r11, r13 #53.30 + adox rsi, r12 #54.32 + adox r8, r14 #55.32 + mov r14, QWORD PTR [-88+rbp] #58.33[spill] + adox r9, rax #56.32 + mulx r15, rax, QWORD PTR [32+r14] #58.33 + adox r10, rcx #57.32 + mov ecx, edi #57.32 + mulx r11, r12, QWORD PTR [40+r14] #59.33 + seto cl #57.32 + clc #62.32 + adcx rax, r11 #62.32 + mulx r13, r11, QWORD PTR [48+r14] #60.33 + adcx r12, r13 #63.32 + mulx r14, r13, QWORD PTR [56+r14] #61.33 + mov edx, edi #65.30 + adcx r11, r14 #64.32 + mov r14d, edi #64.32 + setb r14b #64.32 + adox edx, edi #65.30 + adox r14, r13 #65.30 + clc #66.34 + adcx rsi, r15 #66.34 + mov rdx, rsi #71.35 + adcx r8, rax #67.34 + mov eax, edi #70.34 + adcx r9, r12 #68.34 + mov r12, 0x0ffffffff #72.35 + adcx r10, r11 #69.34 + mov r11, -1 #71.35 + mulx r15, r13, r11 #71.35 + mov r11, 0xffffffff00000001 #73.35 + adcx rcx, r14 #70.34 + setb al #70.34 + mov DWORD PTR [-176+rbp], eax #70.34[spill] + mulx rax, r14, r12 #72.35 + mulx r11, r12, r11 #73.35 + mov edx, edi #74.34 + adox edx, edi #74.34 + mov rdx, QWORD PTR [-256+rbp] #84.35 + adox r13, rax #74.34 + mov eax, 0 #75.34 + adox r14, rax #75.34 + adox r11, rax #76.34 + mov eax, edi #76.34 + seto al #76.34 + clc #77.31 + adcx rax, r12 #77.31 + mov r12d, edi #78.31 + adox r12d, edi #78.31 + adox rsi, r15 #78.31 + mov esi, edi #82.34 + adox r8, r13 #79.34 + adox r9, r14 #80.34 + adox r10, r11 #81.34 + mov r11, QWORD PTR [-88+rbp] #84.35[spill] + adox rcx, rax #82.34 + mulx rax, r15, QWORD PTR [32+r11] #84.35 + seto sil #82.34 + clc #88.34 + mulx r13, r14, QWORD PTR [40+r11] #85.35 + adcx r15, r13 #88.34 + mulx r12, r13, QWORD PTR [48+r11] #86.35 + adcx r14, r12 #89.34 + mulx r11, r12, QWORD PTR [56+r11] #87.35 + mov edx, edi #91.31 + adcx r13, r11 #90.34 + mov r11d, edi #90.34 + setb r11b #90.34 + adox edx, edi #91.31 + adox r11, r12 #91.31 + clc #92.34 + adcx r8, rax #92.34 + mov eax, DWORD PTR [-176+rbp] #96.34[spill] + mov rdx, r8 #97.35 + adcx r9, r15 #93.34 + mov r15, 0x0ffffffff #98.35 + adcx r10, r14 #94.34 + mov r14d, edi #95.34 + adcx rcx, r13 #95.34 + setb r14b #95.34 + add eax, esi #96.34 + xor esi, esi #96.34 + cmp edi, r14d #96.34 + mov r14, 0xffffffff00000001 #99.35 + adcx rax, r11 #96.34 + mov r11, -1 #97.35 + mulx r13, r14, r14 #99.35 + setb sil #96.34 + mov DWORD PTR [-168+rbp], esi #96.34[spill] + mulx rsi, r12, r11 #97.35 + mulx r15, r11, r15 #98.35 + mov edx, edi #100.34 + adox edx, edi #100.34 + mov rdx, QWORD PTR [-248+rbp] #110.35 + adox r12, r15 #100.34 + mov r15d, 0 #101.34 + adox r11, r15 #101.34 + adox r13, r15 #102.34 + mov r15d, edi #102.34 + seto r15b #102.34 + clc #103.31 + adcx r15, r14 #103.31 + mov r14d, edi #104.31 + adox r14d, edi #104.31 + mov r14, QWORD PTR [-88+rbp] #110.35[spill] + adox r8, rsi #104.31 + mov r8d, edi #108.34 + adox r9, r12 #105.34 + mulx rsi, r12, QWORD PTR [32+r14] #110.35 + adox r10, r11 #106.34 + adox rcx, r13 #107.34 + adox rax, r15 #108.34 + mulx r13, r15, QWORD PTR [40+r14] #111.35 + seto r8b #108.34 + clc #114.34 + adcx r12, r13 #114.34 + mulx r13, r11, QWORD PTR [48+r14] #112.35 + adcx r15, r13 #115.34 + mulx r14, r13, QWORD PTR [56+r14] #113.35 + mov edx, edi #117.31 + adcx r11, r14 #116.34 + mov r14d, edi #116.34 + setb r14b #116.34 + adox edx, edi #117.31 + adox r14, r13 #117.31 + clc #118.34 + adcx r9, rsi #118.34 + mov rdx, r9 #123.35 + adcx r10, r12 #119.34 + mov r12d, edi #121.34 + adcx rcx, r15 #120.34 + mov r15, 0x0ffffffff #124.35 + adcx rax, r11 #121.34 + mov r11d, DWORD PTR [-168+rbp] #122.34[spill] + setb r12b #121.34 + add r11d, r8d #122.34 + xor r8d, r8d #122.34 + cmp edi, r12d #122.34 + mov r12, -1 #123.35 + adcx r11, r14 #122.34 + mulx r14, r13, r12 #123.35 + setb r8b #122.34 + mov DWORD PTR [-160+rbp], r8d #122.34[spill] + mov r8, 0xffffffff00000001 #125.35 + mulx r15, r12, r15 #124.35 + mulx r8, rsi, r8 #125.35 + mov edx, edi #126.34 + adox edx, edi #126.34 + mov edx, edi #128.34 + adox r13, r15 #126.34 + mov r15d, 0 #127.34 + adox r12, r15 #127.34 + adox r8, r15 #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, rsi #129.31 + mov esi, edi #130.31 + adox esi, edi #130.31 + adox r9, r14 #130.31 + mov r9d, edi #134.34 + adox r10, r13 #131.34 + mov r13d, DWORD PTR [-160+rbp] #140.31[spill] + adox rcx, r12 #132.34 + mov r12, r10 #136.34 + adox rax, r8 #133.34 + mov r8, 0xffffffff00000001 #139.34 + adox r11, rdx #134.34 + mov rdx, 0x0ffffffff #137.34 + seto r9b #134.34 + xor esi, esi #134.34 + mov r14, -1 #134.34 + add r13d, r9d #140.31 + sub r12, r14 #136.34 + mov r14, rcx #137.34 + mov r9, rax #138.34 + sbb r14, rdx #137.34 + mov rdx, r11 #139.34 + sbb r9, r15 #138.34 + sbb rdx, r8 #139.34 + setb sil #139.34 + cmp edi, esi #140.31 + sbb r13, r15 #140.31 + setb dil #140.31 + testq rdi, rdi; + cmovnzq r11, rdx; + testq rdi, rdi; + cmovnzq rax, r9; + testq rdi, rdi; + cmovnzq rcx, r14; + testq rdi, rdi; + cmovnzq r10, r12; + mov QWORD PTR [-280+rbp], r12 #9.0 + mov QWORD PTR [-304+rbp], rdx #230.34 + mov QWORD PTR [-296+rbp], r9 #230.34 + mov QWORD PTR [-288+rbp], r14 #230.34 + vmovups YMMWORD PTR [-208+rbp], ymm0 #231.21 + mov rcx, QWORD PTR [-96+rbp] #159.32[spill] + xor eax, eax #162.32 + mov r9, QWORD PTR [-240+rbp] #159.32 + xor esi, esi #162.32 + mov r11, QWORD PTR [-232+rbp] #160.32 + mov rdi, -1 #9.0 + sub r9, QWORD PTR [rcx] #159.32 + mov r13, QWORD PTR [-224+rbp] #161.32 + sbb r11, QWORD PTR [8+rcx] #160.32 + mov r14, 0xffffffff00000001 #170.30 + mov rdx, QWORD PTR [-216+rbp] #162.32 + sbb r13, QWORD PTR [16+rcx] #161.32 + sbb rdx, QWORD PTR [24+rcx] #162.32 + setb sil #162.32 + xor r12d, r12d #162.32 + xor r15d, r15d #162.32 + xor ecx, ecx #162.32 + testq rsi, rsi; + cmovnzq rdi, rcx; + xor r8d, r8d #165.32 + mov r10d, ecx #167.32 + adcx r9, rcx #165.32 + mov QWORD PTR [-184+rbp], r9 #231.34 + adcx r11, r10 #167.32 + mov QWORD PTR [-192+rbp], r11 #231.34 + adcx r13, r12 #168.32 + mov QWORD PTR [-200+rbp], r13 #231.34 + setb r15b #168.32 + and rcx, r14 #170.30 + cmp eax, r15d #170.30 + adcx rdx, rcx #170.30 + mov QWORD PTR [-208+rbp], rdx #231.34 + vmovups YMMWORD PTR [-272+rbp], ymm0 #232.21 + setb al #170.30 + mov rdx, QWORD PTR [-208+rbp] #232.63 + mov r15, -1 #46.33 + xor esi, esi #42.32 + xor r10d, r10d #42.32 + mov rcx, 0xffffffff00000001 #48.33 + mulx r13, r8, QWORD PTR [-336+rbp] #38.33 + mulx r12, r9, QWORD PTR [-328+rbp] #39.33 + adox r8, r12 #42.32 + mov r12d, r10d #44.32 + mulx rax, r11, QWORD PTR [-320+rbp] #40.33 + adox r9, rax #43.32 + mov rax, 0x0ffffffff #47.33 + mulx rdi, r14, QWORD PTR [-312+rbp] #41.33 + mov rdx, r13 #46.33 + adox r11, rdi #44.32 + mulx rdi, rax, rax #47.33 + seto r12b #44.32 + clc #45.30 + adcx r12, r14 #45.30 + mulx r15, r14, r15 #46.33 + setb sil #45.30 + mulx rsi, rcx, rcx #48.33 + mov edx, r10d #49.32 + adox edx, r10d #49.32 + mov rdx, QWORD PTR [-200+rbp] #58.33 + adox r14, rdi #49.32 + mov edi, 0 #50.32 + adox rax, rdi #50.32 + adox rsi, rdi #51.32 + mov edi, r10d #51.32 + seto dil #51.32 + clc #52.30 + adcx rdi, rcx #52.30 + mov ecx, r10d #53.30 + adox ecx, r10d #53.30 + adox r13, r15 #53.30 + mulx r13, r15, QWORD PTR [-328+rbp] #59.33 + adox r8, r14 #54.32 + mulx r14, rcx, QWORD PTR [-336+rbp] #58.33 + adox r9, rax #55.32 + adox r11, rsi #56.32 + adox r12, rdi #57.32 + mov edi, r10d #57.32 + seto dil #57.32 + clc #62.32 + adcx rcx, r13 #62.32 + mulx rsi, r13, QWORD PTR [-320+rbp] #60.33 + adcx r15, rsi #63.32 + mulx rax, rsi, QWORD PTR [-312+rbp] #61.33 + mov edx, r10d #65.30 + adcx r13, rax #64.32 + mov eax, r10d #64.32 + setb al #64.32 + adox edx, r10d #65.30 + adox rax, rsi #65.30 + clc #66.34 + adcx r8, r14 #66.34 + mov r14d, r10d #70.34 + mov rdx, r8 #71.35 + adcx r9, rcx #67.34 + adcx r11, r15 #68.34 + mov r15, 0x0ffffffff #72.35 + adcx r12, r13 #69.34 + mov r13, -1 #71.35 + mulx rcx, rsi, r13 #71.35 + adcx rdi, rax #70.34 + mulx rax, r13, r15 #72.35 + setb r14b #70.34 + mov DWORD PTR [-240+rbp], r14d #70.34[spill] + mov r14, 0xffffffff00000001 #73.35 + mulx r14, r15, r14 #73.35 + mov edx, r10d #74.34 + adox edx, r10d #74.34 + mov rdx, QWORD PTR [-192+rbp] #84.35 + adox rsi, rax #74.34 + mov eax, 0 #75.34 + adox r13, rax #75.34 + adox r14, rax #76.34 + mov eax, r10d #76.34 + seto al #76.34 + clc #77.31 + adcx rax, r15 #77.31 + mov r15d, r10d #78.31 + adox r15d, r10d #78.31 + adox r8, rcx #78.31 + mov ecx, r10d #82.34 + mulx r8, r15, QWORD PTR [-328+rbp] #85.35 + adox r9, rsi #79.34 + adox r11, r13 #80.34 + adox r12, r14 #81.34 + mulx r13, r14, QWORD PTR [-336+rbp] #84.35 + adox rdi, rax #82.34 + seto cl #82.34 + clc #88.34 + adcx r14, r8 #88.34 + mulx rsi, r8, QWORD PTR [-320+rbp] #86.35 + adcx r15, rsi #89.34 + mulx rax, rsi, QWORD PTR [-312+rbp] #87.35 + mov edx, r10d #91.31 + adcx r8, rax #90.34 + mov eax, r10d #90.34 + setb al #90.34 + adox edx, r10d #91.31 + adox rax, rsi #91.31 + clc #92.34 + mov esi, DWORD PTR [-240+rbp] #96.34[spill] + adcx r9, r13 #92.34 + mov r13d, r10d #95.34 + mov rdx, r9 #97.35 + adcx r11, r14 #93.34 + adcx r12, r15 #94.34 + adcx rdi, r8 #95.34 + setb r13b #95.34 + xor r14d, r14d #95.34 + mov r8, -1 #95.34 + add esi, ecx #96.34 + cmp r10d, r13d #96.34 + mov rcx, 0x0ffffffff #98.35 + mov r13, 0xffffffff00000001 #99.35 + adcx rsi, rax #96.34 + mulx rcx, rax, rcx #98.35 + setb r14b #96.34 + mov DWORD PTR [-232+rbp], r14d #96.34[spill] + mulx r14, r8, r8 #97.35 + mulx r13, r15, r13 #99.35 + mov edx, r10d #100.34 + adox edx, r10d #100.34 + mov rdx, QWORD PTR [-184+rbp] #110.35 + adox r8, rcx #100.34 + mov ecx, 0 #101.34 + adox rax, rcx #101.34 + adox r13, rcx #102.34 + mov ecx, r10d #102.34 + seto cl #102.34 + clc #103.31 + adcx rcx, r15 #103.31 + mov r15d, r10d #104.31 + adox r15d, r10d #104.31 + adox r9, r14 #104.31 + mulx r9, r14, QWORD PTR [-328+rbp] #111.35 + adox r11, r8 #105.34 + mulx r15, r8, QWORD PTR [-336+rbp] #110.35 + adox r12, rax #106.34 + adox rdi, r13 #107.34 + mov r13d, r10d #108.34 + adox rsi, rcx #108.34 + mulx rcx, rax, QWORD PTR [-320+rbp] #112.35 + seto r13b #108.34 + clc #114.34 + adcx r8, r9 #114.34 + adcx r14, rcx #115.34 + mulx r9, rcx, QWORD PTR [-312+rbp] #113.35 + mov edx, r10d #117.31 + adcx rax, r9 #116.34 + mov r9d, r10d #116.34 + setb r9b #116.34 + adox edx, r10d #117.31 + adox r9, rcx #117.31 + clc #118.34 + mov ecx, DWORD PTR [-232+rbp] #122.34[spill] + adcx r11, r15 #118.34 + mov r15, 0x0ffffffff #124.35 + mov rdx, r11 #123.35 + adcx r12, r8 #119.34 + adcx rdi, r14 #120.34 + adcx rsi, rax #121.34 + mov eax, r10d #121.34 + setb al #121.34 + xor r8d, r8d #121.34 + add ecx, r13d #122.34 + mov r13, -1 #122.34 + cmp r10d, eax #122.34 + adcx rcx, r9 #122.34 + mov r9, 0xffffffff00000001 #125.35 + setb r8b #122.34 + mov DWORD PTR [-224+rbp], r8d #122.34[spill] + mulx r8, r14, r13 #123.35 + mulx rax, r13, r15 #124.35 + mulx r9, r15, r9 #125.35 + mov edx, r10d #126.34 + adox edx, r10d #126.34 + mov edx, r10d #128.34 + adox r14, rax #126.34 + mov eax, 0 #127.34 + adox r13, rax #127.34 + adox r9, rax #128.34 + seto dl #128.34 + clc #129.31 + adcx rdx, r15 #129.31 + mov r15d, r10d #130.31 + adox r15d, r10d #130.31 + adox r11, r8 #130.31 + mov r11d, r10d #134.34 + adox r12, r14 #131.34 + mov r14, 0xffffffff00000001 #139.34 + mov r8, r12 #136.34 + adox rdi, r13 #132.34 + adox rsi, r9 #133.34 + mov r9d, DWORD PTR [-224+rbp] #140.31[spill] + adox rcx, rdx #134.34 + mov r13, rcx #139.34 + seto r11b #134.34 + xor r15d, r15d #134.34 + mov rdx, -1 #134.34 + add r9d, r11d #140.31 + sub r8, rdx #136.34 + mov rdx, rdi #137.34 + mov r11, 0x0ffffffff #137.34 + sbb rdx, r11 #137.34 + mov r11, rsi #138.34 + sbb r11, rax #138.34 + sbb r13, r14 #139.34 + setb r15b #139.34 + cmp r10d, r15d #140.31 + mov r15d, r10d #140.31 + sbb r9, rax #140.31 + setb r15b #140.31 + testq r15, r15; + cmovnzq rcx, r13; + xor ecx, ecx #9.0 + testq r15, r15; + cmovnzq rsi, r11; + testq r15, r15; + cmovnzq rdi, rdx; + mov rdi, -1 #9.0 + testq r15, r15; + cmovnzq r12, r8; + xor r12d, r12d #162.32 + mov QWORD PTR [-272+rbp], r13 #232.34 + sub r13, QWORD PTR [-304+rbp] #159.32 + mov QWORD PTR [-264+rbp], r11 #232.34 + sbb r11, QWORD PTR [-296+rbp] #160.32 + mov QWORD PTR [-256+rbp], rdx #232.34 + sbb rdx, QWORD PTR [-288+rbp] #161.32 + mov QWORD PTR [-248+rbp], r8 #232.34 + sbb r8, QWORD PTR [-280+rbp] #162.32 + setb r12b #162.32 + testq r12, r12; + cmovnzq rdi, rcx; + xor esi, esi #165.32 + mov r12d, ecx #167.32 + adcx r13, rcx #165.32 + mov rsi, QWORD PTR [-112+rbp] #9.0[spill] + adcx r11, r12 #167.32 + mov r12d, r10d #168.32 + adcx rdx, rax #168.32 + mov rax, QWORD PTR [-96+rbp] #172.1[spill] + setb r12b #168.32 + and r14, rcx #170.30 + cmp r10d, r12d #170.30 + mov rcx, QWORD PTR [-104+rbp] #9.0[spill] + adcx r8, r14 #170.30 + mov QWORD PTR [40+rax], rdx #172.1 + mov QWORD PTR [48+rax], r11 #173.1 + mov QWORD PTR [56+rax], r13 #174.1 + mov QWORD PTR [32+rax], r8 #171.1 + mov rdi, QWORD PTR [56+rcx] #9.0 + testq rsi, rsi; + cmovnzq r13, rdi; + mov QWORD PTR [56+rax], rdi #234.5 + mov r12, QWORD PTR [48+rcx] #9.0 + testq rsi, rsi; + cmovnzq r11, r12; + mov QWORD PTR [48+rax], r12 #235.5 + mov r10, QWORD PTR [40+rcx] #9.0 + testq rsi, rsi; + cmovnzq rdx, r10; + mov QWORD PTR [40+rax], r10 #236.5 + mov rcx, QWORD PTR [32+rcx] #9.0 + testq rsi, rsi; + cmovnzq r8, rcx; + mov rsi, QWORD PTR [-88+rbp] #9.0[spill] + mov QWORD PTR [32+rax], rcx #237.5 + mov rdx, QWORD PTR [-80+rbp] #9.0[spill] + mov r8, QWORD PTR [56+rsi] #9.0 + testq rdx, rdx; + cmovnzq rdi, r8; + mov QWORD PTR [56+rax], r8 #9.0 + mov r13, QWORD PTR [48+rsi] #9.0 + testq rdx, rdx; + cmovnzq r12, r13; + mov QWORD PTR [48+rax], r13 #9.0 + mov rdi, QWORD PTR [40+rsi] #9.0 + testq rdx, rdx; + cmovnzq r10, rdi; + mov QWORD PTR [40+rax], rdi #9.0 + mov r8, QWORD PTR [32+rsi] #9.0 + testq rdx, rdx; + cmovnzq rcx, r8; + mov QWORD PTR [32+rax], r8 #9.0 + vzeroupper #242.1 + lea rsp, QWORD PTR [-32+rbp] #242.1 + pop r15 #242.1 + pop r14 #242.1 + pop r13 #242.1 + pop r12 #242.1 + pop rbp #242.1 + mov rsp, rbx #242.1 + pop rbx #242.1 + ret #242.1 diff --git a/src/Specific/NISTP256/AMD64/icc/measurements.txt b/src/Specific/NISTP256/AMD64/icc/measurements.txt index 18729ea40..102afc182 100644 --- a/src/Specific/NISTP256/AMD64/icc/measurements.txt +++ b/src/Specific/NISTP256/AMD64/icc/measurements.txt @@ -1,2 +1,2 @@ 1140 ashryn-noht-notb-noac-broadwell 2.60ghz 7.1.1 cac291e0 -1144 ashryn-noht-notb-ac-broadwell 2.60ghz 7.1.1 5397ade1 +1160 ashryn-noht-notb-ac-broadwell 2.50ghz 7.1.1 448af3b4 diff --git a/src/Specific/NISTP256/AMD64/measurements.txt b/src/Specific/NISTP256/AMD64/measurements.txt index ac19ef2f4..1734b1b25 100644 --- a/src/Specific/NISTP256/AMD64/measurements.txt +++ b/src/Specific/NISTP256/AMD64/measurements.txt @@ -1,2 +1,2 @@ -1576 ashryn-noht-notb-ac-broadwell 2.60ghz 7.1.1 5397ade1 1576 ashryn-noht-notb-noac-broadwell 2.60ghz 7.1.1 cac291e0 +1688 ashryn-noht-notb-ac-broadwell 2.50ghz 7.1.1 448af3b4 diff --git a/src/Specific/NISTP256/AMD64/p256.h b/src/Specific/NISTP256/AMD64/p256.h index db53b7696..4cf271dfd 100644 --- a/src/Specific/NISTP256/AMD64/p256.h +++ b/src/Specific/NISTP256/AMD64/p256.h @@ -1,2 +1,5 @@ -void p256_jacobian_add_affine(long long unsigned int r[12], long long unsigned int j[12], long long unsigned int a[8]); - +#include <stdint.h> +void p256_jacobian_add_affine( + uint64_t P3[12], + uint64_t P1[12], + uint64_t P2[8]); diff --git a/src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c b/src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c index bd6d6dfb1..e51a45f17 100644 --- a/src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c +++ b/src/Specific/NISTP256/AMD64/p256_jacobian_add_affine.c @@ -1,311 +1,27 @@ #include <stdint.h> #include <stdbool.h> #include <x86intrin.h> +#include "liblow.h" #include "p256.h" +#include "feadd.h" +#include "fesub.h" +#include "feopp.h" +#include "femul.h" +#include "fenz.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); +void force_inline fesquare(uint64_t o[4], uint64_t a, uint64_t b, uint64_t c, uint64_t d) { + femul(o, + a, b, c, d, + a, b, c, d); } -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 P3[12], uint64_t P1[12], - uint64_t P2[8], - uint64_t P3[12] + uint64_t P2[8] ) { uint64_t* X1 = P1; uint64_t* Y1 = P1+4; @@ -316,48 +32,49 @@ void p256_jacobian_add_affine( 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 P1nz; fenz(&P1nz, X2[3], X2[2], X2[1], X2[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 X2nz; fenz(&X2nz, 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 Y2nz; fenz(&Y2nz, Y2[3], Y2[2], Y2[1], Y2[0]); + uint64_t P2nz = X2nz | Y2nz; 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]); + Z3[3] = cmovznz(P1nz, 0x0000000000000001, Z3[3]); + Z3[2] = cmovznz(P1nz, 0xffffffff00000000, Z3[2]); + Z3[1] = cmovznz(P1nz, 0xffffffffffffffff, Z3[1]); + Z3[0] = cmovznz(P1nz, 0xffffffffffffffff, Z3[0]); + Z3[3] = cmovznz(P2nz, Z1[3], Z3[3]); + Z3[2] = cmovznz(P2nz, Z1[2], Z3[2]); + Z3[1] = cmovznz(P2nz, Z1[1], Z3[1]); + Z3[0] = cmovznz(P2nz, Z1[0], Z3[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]); + X3[3] = cmovznz(P1nz, X2[3], X3[3]); + X3[2] = cmovznz(P1nz, X2[2], X3[2]); + X3[1] = cmovznz(P1nz, X2[1], X3[1]); + X3[0] = cmovznz(P1nz, X2[0], X3[0]); + X3[3] = cmovznz(P2nz, X1[3], X3[3]); + X3[2] = cmovznz(P2nz, X1[2], X3[2]); + X3[1] = cmovznz(P2nz, X1[1], X3[1]); + X3[0] = cmovznz(P2nz, X1[0], X3[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]); + Y3[3] = cmovznz(P1nz, Y2[3], Y3[3]); + Y3[2] = cmovznz(P1nz, Y2[2], Y3[2]); + Y3[1] = cmovznz(P1nz, Y2[1], Y3[1]); + Y3[0] = cmovznz(P1nz, Y2[0], Y3[0]); + Y3[3] = cmovznz(P2nz, Y1[3], Y3[3]); + Y3[2] = cmovznz(P2nz, Y1[2], Y3[2]); + Y3[1] = cmovznz(P2nz, Y1[1], Y3[1]); + Y3[0] = cmovznz(P2nz, Y1[0], Y3[0]); } diff --git a/src/Specific/X25519/C64/measurements.txt b/src/Specific/X25519/C64/measurements.txt index ca5941207..e9ef5a5a7 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 +136156 ashryn-ht-tb-ac-broadwell 3.10ghz 7.1.1 448af3b4 168279 JASONGROSS-X230-ht-tb-nops-ivybridge 2.90ghz 6.3.0 c003b54 168380 ashryn-noht-notb-ac-broadwell 2.60ghz 7.1.1 5397ade1 168628 ashryn-noht-notb-noac-broadwell 2.60ghz 7.1.1 cac291e0 diff --git a/third_party/openssl-nistp256c64/measurements.txt b/third_party/openssl-nistp256c64/measurements.txt new file mode 100644 index 000000000..7d03767b5 --- /dev/null +++ b/third_party/openssl-nistp256c64/measurements.txt @@ -0,0 +1 @@ +2040 ashryn-noht-notb-ac-broadwell 2.50ghz 7.1.1 8ae1ab29 |